をキャストタイプIは、次の質問(と私は与えられた答えと同じようにそれを解決するだろう)読み:Passing derived type as argument to abstract class一般的な方法と
をしかし、なぜ派生クラスからvalue
属性を見つけることができないのですか?私は型キャストを追加しても、それはできません。型キャストと
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found
return a.value + b.value;
}
public float value;
}
例も動作していない(とアドバイス冗長型キャストが示されている):
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found even with type cast
return ((derived)a).value + ((derived)b).value;
}
public float value;
}
例型キャストでは、働いている - それは問題を命名です。ジェネリック型パラメータの名前を 'T'に戻します。すると、' derived'にキャストできます。 – 2kay
@ 2kayヒントありがとう –