これは私のクラスをどのように見せたいかですが、このコードはコンパイルされません。どうすればそれを機能させることができますか?
public interface ISomeInterface
{
string AMember { get; }
}
public abstract class BaseClass
{
public abstract ISomeInterface AObject { get; }
public abstract IEnumerable<ISomeInterface> AMethod();
}
public class DerivedClass<T> : BaseClass where T : ISomeInterface
{
public T AObject { get; private set; }
public IEnumerable<T> AMethod()
{
return null;
}
}
コンパイラエラー
「Delfin.Accountancy.DerivedClass」は、継承された抽象メンバー「Delfin.Accountancy.BaseClass.AObject.get」を実装していません。
「Delfin.Accountancy.DerivedClass」は、継承された抽象メンバー「Delfin.Accountancy.BaseClass.AMethod()」を実装していません。
C#5.0で実行しています。
ノート
私は最も明白な実装を試しましたが、それらのいずれも、基本クラスを実装し、強く型付けされたメンバーを一度に公開することを可能にします。
基本クラスに静的メソッドを作成し、派生クラスのすべての場合に機能する可能性のある拡張メソッドも作成するため、基本クラスをジェネリックにしたくありません。
また、実世界の場合、TにはISomeInterfaceよりも多くのメンバーがあるため、派生クラスは汎用である必要があります。
ありがとう!