假设我有一个以下课程:
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
答案 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;
}
}
现在,您可以按常规方式为每个控制器注册处理程序,它们将解析为正确的类型。
您可能想用接口或协方差来修饰一下,但这是一般的想法。