使用Ioc容器“反向解析”?

时间:2013-10-26 00:09:35

标签: .net dependency-injection ioc-container

我想注册一个类并让IOC容器隐式注册与该类关联的接口,而不是注册接口到类的绑定。我想知道是否有任何IOC容器可以做到这一点,尽管我特别需要Unity的答案。

要明确我的意思,请注意:

public interface IFred
{
    int Go();
}
public class Fred : IFred
{
    public int Go()
    {
        return 1;
    }
}

class Program
{
    static void Main(string[] args)
    {
        UnityContainer container = new UnityContainer();

        container.RegisterType<Fred>();     //contra-variant registration?
        IFred foo = container.Resolve<IFred>();  //variant resolution?
    }
}

在上面的例子中,我希望返回一个“Fred”实例,即使我没有显式注册IFred映射。

1 个答案:

答案 0 :(得分:2)

我知道一对夫妇(不是 Unity 虽然抱歉)

Autofac:

ContainerBuilder builder = new ContainerBuilder();
builder
    .RegisterType<Fred>()
    .AsImplementedInterfaces();

和温莎城堡:

WindsorContainer container = new WindsorContainer();
container.Register(
    Classes
        .From(typeof(Fred))
        .Pick()
        .LifestyleTransient()
        .WithServiceAllInterfaces());