Unity根据基于调用者的类解析依赖关系

时间:2015-02-18 15:49:08

标签: c# dependency-injection unity-container

我有以下情况:

public class Animal 
{
    public virtual string SayHello(IDefaultService service)
    {
        return service.GenerateHelloString();
    }
}

public class Cat : Animal
{
    public override string SayHello(ISpecializedServiceA service)
    {
        return service.GenerateHelloString();
    }
}

public class Dog : Animal
{
    public override string SayHello(ISpecializedServiceB service)
    {
        return service.GenerateHelloString();
    }
}

public interface IDefaultService 
{
    string GenerateHelloString();
}

public interface ISpecializedServiceA : IDefaultService 
{
    string GenerateHelloString();
}

public interface ISpecializedServiceB : IDefaultService 
{
    string GenerateHelloString();
}

我将使用类似的东西检索对象:

Animal animal = db.GetAnimalByID(someID);

我需要做那样的事情:

animal.SayHello(mycontainer.Resolve<IDefaultService>());

但我想根据动物的类型注入正确的专业服务。

我怎样才能做到这一点?

编辑:这只是我所面临的情况的一个例证,我试图实现这一点,因为我的基类的不同专业化将需要不同的服务来调用不同的API。我想知道是否有可能用Unity处理这种情况,如果是的话。

0 个答案:

没有答案