0
public interface IHasFeature<TFeature> {
TFeature Feature { get; set; }
}
public class FeatureOne {
/*...*/
}
public class ProductOne : IHasFeature<FeatureOne> {
public FeatureOne Feature { get; set; }
}
public abstract class BaseContainer<TProduct, TFeature>
where TProduct : IHasFeature<TFeature> {
public TProduct Product { get; set; }
public void DoProcess() {
var result = Product.Feature.Execute(); //Execute is an extension method
}
}
public class MyContainer : BaseContainer<ProductOne, FeatureOne> {
/*...*/
}
作品,當我做:如何簡化此嵌套泛型類型類
MyContainer : BaseContainer<ProductOne, FeatureOne>
但我想:
MyContainer : BaseContainer<ProductOne>
ProductOne : IHasFeature<...>
應該已經包含嵌套泛型功能TFeature
,我不想在MyContainer
建設中再次重複它們。
任何想法,我可以改善這一點?謝謝。
EDIT2 -----------------------
刪除新的關鍵字,這是錯誤的,因爲雷納德說。
首先,爲什麼'IHasFeature'通用的,當你根本不使用泛型?難道它不是標準的非通用接口嗎?它會解決你的問題。 – MarcinJuraszek
像'FeatureOne'這樣的特性是否應該從通用接口IFeature繼承? – Nenad
您的容器需要某些功能,您想如何告訴它哪些功能需要?在你的「但我想要」部分中,「MyContainer」應該怎麼知道要驗證什麼?你說'ProductOne'知道'FeatureOne',但是你想驗證一個產品是否有一個已經有的功能。這對我來說沒有意義,或者我不明白你想達到什麼目的。 – BartoszKP