.net 从Windsor获取类型的相应视图

.net 从Windsor获取类型的相应视图,.net,dependency-injection,castle-windsor,.net,Dependency Injection,Castle Windsor,我定义了以下类: public interface IShapeView { void DoSomethingWithShape(Shape shape); } public interface IShapeView<T> where T : Shape { void DoSomethingWithShape(T shape); } public class CircleView : IShapeView<Circle>, IShapeView {

我定义了以下类:

public interface IShapeView
{
    void DoSomethingWithShape(Shape shape);
}
public interface IShapeView<T> where T : Shape
{
    void DoSomethingWithShape(T shape);
}

public class CircleView : IShapeView<Circle>, IShapeView
{
    public void DoSomethingWithShape(Circle shape)
    {
        MessageBox.Show("Circle:" + shape.Radius);
    }
    void IShapeView.DoSomethingWithShape(Shape shape)
    {
        DoSomethingWithShape((Circle)shape);
    }
}
public class Circle : Shape
{
    public Circle()
    {
        Radius = 1.0;
    }

    public double Radius { get; set; }
}
公共界面IShapeView
{
空洞形状(形状);
}
公共界面IShapeView,其中T:Shape
{
空心形状(T形);
}
公共类CircleView:IShapeView,IShapeView
{
公共空心形状(圆形)
{
MessageBox.Show(“圆:+形状.半径”);
}
void IShapeView.DoSomethingWithShape(形状)
{
dosomething的形状((圆形)形状);
}
}
公共课圈:形状
{
公众圈()
{
半径=1.0;
}
公共双半径{get;set;}
}
以及以下注册:

container.Register(Component.For<IShapeView<Circle>>().ImplementedBy<CircleView>());
container.Register(Component.For().ImplementedBy());
当我只有形状的类型时,有没有一种方法可以调用来解析视图? 或者我需要麻烦使用反射来创建泛型类型参数以获得我想要的正确类型的IShapeView吗?寻找这样的东西:

Type shapeType = typeof(Circle);
IShapeView view = (IShapeView) container.SomeResolveMethod(shapeType, typeof(IShapeView<>));
Type shapeType=typeof(圆);
IShapeView视图=(IShapeView)container.SomeResolveMethod(shapeType,typeof(IShapeView));

没有内置的方法,因为它不需要。不需要它的原因是,在实际应用程序中,您永远不会直接从容器中提取组件,而是使用类型化工厂


类型化工厂可以很容易地学习如何处理这种情况。看看。

谢谢,这就是我要找的!