我读了以下问题(我会解决这个问题的相同的方式给出答案):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感谢提示 –