私は、ジェネリッククラスを実装するクラスのリストを持っていて、抽象ベースを通じてGenericClassのいくつかのメンバーにアクセスできるようにしようとしています。私は現時点では午前場所です:abstractから派生したジェネリッククラスのメソッドを暗黙的に実装するにはどうすればよいですか?
public abstract class AbstractParent: UserControl
{
public abstract AAction Action { get; set; }
}
public abstract class GenericBase<ActionType> : AbstractParent
{
protected ActionType _action;
new public ActionType Action
{
set { _action = value; }
get { return _action; }
}
}
GenericBase <>インスタンスのリストを持っているために、私はList<AbstractParent>
を使用し、問題は、私はgenericTypeのパブリックプロパティが(合格したいということですGenericBaseの派生クラスによって)。
現時点のエラーはAction hides inherited abstract member Action.get
です。 私は、派生したプロパティにabstract proprtyと実装、または実装とnew
修飾子を持つことができます。どちらもこの状況に適合しません。私が何をしたいの
例:必要であれば、あなたの継承されたクラスは、オーバーライドすることができ
public abstract class AbstractParent<ActionType>
{
public abstract Action<ActionType> Action { get; set; }
}
:
public override Action<ActionType> Action
を
GenericBase<BlueAction> blueClass;
blueClass.Action <- I want this member to be of BlueAction type
かなり確信して、あなたがすることはできません。それを引き出すためには2レベルの派生型が必要です。(オーバーライドの場合は1つ、 'new'の場合は1つ) –
@MarcGravellの回避策はありますか? – Odys
XYの問題のように聞こえます。なぜそれをする必要がありますか? http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem –