我有一个名为KeyRatioSymbol的基类。 我有一个继承自KeyRatioSymbol的类,名为GuruFocusKeyRatioSymbol。
KeyRatioSymbol有这种更新方法:
/// <summary>
/// Updates an existing key ratio symbol by setting the values from the new <see cref="KeyRatioSymbol"/>.
/// </summary>
public virtual void Update<T>(T newKeyRatioSymbol) where T : KeyRatioSymbol
{
this.Identifier = newKeyRatioSymbol.Identifier;
}
GuruFocusKeyRatioSymbol定义成员CurrencyId,并希望在更新时覆盖update方法以包含新的CurrencyId:
private int _CurrencyId;
/// <summary>
/// Gets or sets the CurrencyId
/// </summary>
public int CurrencyId { get { return this._CurrencyId; } set { this.SetProperty(ref this._CurrencyId, value); } }
public override void Update<GuruFocusKeyRatioSymbol>(GuruFocusKeyRatioSymbol newKeyRatioSymbol)
{
base.Update(newKeyRatioSymbol);
this.CurrencyId = x.CurrencyId; // Compiler error
}
现在编译器抱怨:'GuruFocusKeyRatioSymbol'不包含'CurrencyId'的定义......
为什么编译器在类GuruFocusKeyRatioSymbol中找不到CurrencyId memeber?
问候!
答案 0 :(得分:2)
在T
方法中,您只需命名通用参数GuruFocusKeyRatioSymbol
,而在父级中使用名称GuruFocusKeyRatioSymbol
。命名泛型参数T
并不意味着它将属于您的CurrencyID
类型,您现在只有两个具有相同名称的不同类型。如果命名泛型方法参数findstatic
,这是常见的约定,它将具有相同的行为,但是很明显为什么该类型的对象不一定具有static
;它们可以是任何类型的键比符号,而不仅仅是那个特定的符号。