我有以下情况:
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处理这种情况,如果是的话。