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 -----------------------
新しいキーワードを削除しました。ネナドが言ったように間違っていました。