统一容器解决开放通用复杂实现

时间:2019-01-10 22:49:47

标签: c# unity-container

我有这个例子

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上打开了一个问题,但他们向我展示的方式无效,也许我很幸运,有人做了相同问题的解决方案

https://github.com/unitycontainer/container/issues/127

0 个答案:

没有答案