您需要迭代实现的所有类型
ICommandHandler<>
并进行登记。代码如下:
public static void RegisterAllImplementations(this UnityContainer container, Type openInterfaceType)
{
int registerCount = 0;
// Iterate all types from current assembly
foreach (var typeItem in Assembly.GetExecutingAssembly().GetTypes())
{
foreach (var interaceItem in typeItem.GetInterfaces())
{
if (interaceItem.IsGenericType && interaceItem.GetGenericTypeDefinition() == openInterfaceType)
{
container.RegisterType(interaceItem, typeItem, $"{registerCount++}");
}
}
}
}
var container = new UnityContainer();
container.RegisterAllImplementations(typeof(ICommandHandler<>));