Tim*_*Tim 5 c# generics ioc-container inversion-of-control unity-container
我有一个包含很多类(300+)和BaseClass的程序集,我希望注册一个带接口的泛型类.
如果要解析接口的对象数组,则必须通过{ Name } 注册.我想自动在MainViewModel中有一个对象数组.
有没有办法通过反射自动化这个?有什么建议?
示例(伪):
public class BaseClass
{
public void doFoo();
}
public ClassNumber001 : BaseClass
{
}
public ClassNumber002 : BaseClass
{
}
public interface ISuperman
{
}
public class Superman : ISuperman where T : BaseClass
{
}
public MainViewModel(IEnumerable<ISuperman> lotsofSuperman)
{
}
Run Code Online (Sandbox Code Playgroud)
手工实例:
container.RegisterType<ISuperman, Superman <ClassNumber001>>("ClassNumber001");
container.RegisterType<ISuperman, Superman <ClassNumber002>>("ClassNumber002");
container.RegisterType<IEnumerable<ISuperman>, ISuperman[]>();
Run Code Online (Sandbox Code Playgroud)
这是我想到的可能对你有用的东西......
您可以按如下方式注册类型,并且应该适用于open generic。
container.RegisterType(typeof(ISuperman<>), typeof(Superman<>), ... );
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!