将请求的类类型传递给请求的类构造函数

时间:2018-09-06 21:27:05

标签: c# reflection castle-windsor

假设我有一个以下课程:

public class Handler
{
    public Type RequesterType { get; }

    public Handler(Type requesterType)
    {
        RequesterType = requesterType;
    }
}

本身就是另一个类的依赖项:

public class Controller
{
    public Handler Handler { get; }

    public Controller(Handler handler)
    {
        Handler = handler;
    }
}

是否可以通过以下方式注册Handler:在解析Controller时,将Handler的依存构造函数参数requesterType分配给{{ 1}}类型?

这是我要实现的目标的一个示例:

Controller

1 个答案:

答案 0 :(得分:3)

一种常见的处理方法是使Handler通用:

public class Handler<T>
{
    public Type RequesterType { get { return typeof(T) ; }
}

然后将其作为通用类型参数传递,而不是将其传递给构造函数:

public class Controller
{
    public Handler<Controller> Handler { get; }

    public Controller(Handler<Controller> handler)
    {
        Handler = handler;
    }
}

现在,您可以按常规方式为每个控制器注册处理程序,它们将解析为正确的类型。

您可能想用接口或协方差来修饰一下,但这是一般的想法。