0
假設我有一個手柄類,如:有沒有什麼辦法可以在C#4中使用新的co/contravariance來實現這種類型的層次結構?
interface IHasHandle<TObject> {
IHandle<TObject> Handle { get; }
}
interface IHandle<out TObject> {
TObject Value { get; }
}
我想使用這個類來給我的層次來最派生輸出類型。我有現在的樣子:
interface IAnimal : IHasHandle<IAnimal> { ... }
interface IMammal : IAnimal, IHasHandle<IMammal> { ... }
interface IFeline : IMammal, IHasHandle<IFeline> { ... }
class Tiger : IFeline {
IHandle<IAnimal> IHasHandle<IAnimal>.Handle { get { ... } }
IHandle<IMammal> IHasHandle<IMammal>.Handle { get { ... } }
IHandle<IFeline> IHasHandle<IFeline>.Handle { get { ... } }
public IHandle<Tiger> Handle { get { ... } }
}
這意味着,當我有一個IAnimal,我總是可以得到IHandle,當我有IMammal,我可以得到IHandle等
沒有人有任何一般對於這種結構或想法如何避免每一個可能的實現提出意見?
依賴注入?只是一個想法。 – Andrew