C# 未找到继承的成员
我有一个基类叫做KeyRatioSymbol。 我有一个从KeyRatioSymbol继承的类,名为GuruFocusKeyRatioSymbol KeyRatioSymbol具有以下更新方法:C# 未找到继承的成员,c#,inheritance,C#,Inheritance,我有一个基类叫做KeyRatioSymbol。 我有一个从KeyRatioSymbol继承的类,名为GuruFocusKeyRatioSymbol KeyRatioSymbol具有以下更新方法: /// <summary> /// Updates an existing key ratio symbol by setting the values from the new <see cref="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;
}
//
///通过设置新符号中的值来更新现有密钥比率符号。
///
公共虚拟无效更新(T newKeyRatioSymbol),其中T:KeyRatioSymbol
{
this.Identifier=newKeyRatioSymbol.Identifier;
}
GuruFocusKeyRatioSymbol定义了成员CurrencyId,并希望在更新时覆盖更新方法以包含新的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
}
private int\u CurrencyId;
///
///获取或设置CurrencyId
///
public int CurrencyId{get{返回此。_CurrencyId;}set{this.SetProperty(引用此。_CurrencyId,value);}}
公共覆盖无效更新(GuruFocusKeyRatioSymbol newKeyRatioSymbol)
{
base.Update(newKeyRatioSymbol);
this.CurrencyId=x.CurrencyId;//编译器错误
}
现在编译器抱怨:“GuruFocusKeyRatioSymbol”不包含“CurrencyId”的定义
为什么编译器在类GuruFocusKeyRatioSymbol中找不到CurrencyId成员
问候 在
Update
方法中,您仅将泛型参数命名为GuruFocusKeyRatioSymbol
,而在父级中使用了名称T
。命名泛型参数GuruFocusKeyRatioSymbol
并不意味着它将属于您的GuruFocusKeyRatioSymbol
类型,您刚才有两个同名的不同类型。如果您将泛型方法参数命名为T
,这是常见的约定,它将具有相同的行为,但很明显,为什么该类型的对象不一定具有CurrencyID
;它们可以是任何类型的键比率符号,而不仅仅是特定的键比率符号。在Update
方法中,您只需将泛型参数命名为GuruFocusKeyRatioSymbol
,而在父级中使用了名称T
。命名泛型参数GuruFocusKeyRatioSymbol
并不意味着它将属于您的GuruFocusKeyRatioSymbol
类型,您刚才有两个同名的不同类型。如果您将泛型方法参数命名为T
,这是常见的约定,它将具有相同的行为,但很明显,为什么该类型的对象不一定具有CurrencyID
;它们可以是任何类型的键比率符号,而不仅仅是那个特定的;基类定义了T
的泛型类型参数,而派生类提供的类型参数为GuruFocusKeyRatioSymbol
。从this.CurrencyId=x.CurrencyId
,其中定义了x
。如果我们能在这里看到更完整的示例,那就太好了。据我们所知,您在某个地方键入了一个类名,this
或x
的类型不是您所认为的类型。@MetroSmurf是对的,但它并没有像看上去那样做。类型参数GuruFocusKeyRatioSymbol
的名称隐藏了覆盖该方法的封闭类GuruFocusKeyRatioSymbol
的名称。这就是它不起作用的原因GuruFocusKeyRatioSymbol
只是基本方法的T
的另一个名称。我的意思是不能在重写中专门化类型参数。意图是错误的,但语法确实有效。@AluanHaddad-您删除了原始评论,而本次讨论的意图已丢失。没有太多的理由继续下去。@AluanHaddad-当然了;基类定义了T
的泛型类型参数,而派生类提供的类型参数为GuruFocusKeyRatioSymbol
。从this.CurrencyId=x.CurrencyId
,其中定义了x
。如果我们能在这里看到更完整的示例,那就太好了。据我们所知,您在某个地方键入了一个类名,this
或x
的类型不是您所认为的类型。@MetroSmurf是对的,但它并没有像看上去那样做。类型参数GuruFocusKeyRatioSymbol
的名称隐藏了覆盖该方法的封闭类GuruFocusKeyRatioSymbol
的名称。这就是它不起作用的原因GuruFocusKeyRatioSymbol
只是基本方法的T
的另一个名称。我的意思是不能在重写中专门化类型参数。意图是错误的,但语法确实有效。@AluanHaddad-您删除了原始评论,而本次讨论的意图已丢失。没有太多理由继续。啊,谢谢。通过重写该方法,我只需重新实现它,并将泛型参数T(基类)重命名为GuruFocusKeyRatioSymbol.Ah,谢谢。通过重写该方法,我只需重新实现它,并将泛型参数T(基类)重命名为GuruFocusKeyRatioSymbol。