我有这个例子
public class DefaultAction<T> { }
public interface IEvent<T> { }
public class DefaultEvent<T> : IEvent<DefaultAction<T>> { }
public class A { }
public class B { }
public class DefaultEventA : IEvent<DefaultAction<A>> { }
static void Main(string[] args)
{
// Get the container
var container = new UnityContainer();
// Register few types
container.RegisterType(typeof(IEvent<>).MakeGenericType(typeof(DefaultAction<>)), typeof(DefaultEvent<>), "DefaultEvent");
container.RegisterType(typeof(IEvent<DefaultAction<A>>), typeof(DefaultEventA), "DefaultA");
// Register my extension
foreach (var foo in container.ResolveAll<IEvent<DefaultAction<A>>>())
{
Console.WriteLine(foo);
}
Console.ReadKey();
}
我认为它应该解决两个注册,但不能解决第一个注册,我在unity github上打开了一个问题,但他们向我展示的方式无效,也许我很幸运,有人做了相同问题的解决方案