C# 为什么编译器会给出错误“quot;名称';标识符';在当前上下文中不存在;?

C# 为什么编译器会给出错误“quot;名称';标识符';在当前上下文中不存在;?,c#,generics,C#,Generics,这里是上下文(C#) 公共类基 { 公共方法() { } } 公营中级 { } 派生的公共类:中级 { 公共无效的某物() { SomeMethod();//错误:名称“SomeMethod”在当前上下文中不存在。 } } 这是出乎意料的。 关于为什么以及如何修复它的任何解释?中间版没有对方法所在的基进行子类化,因此它不是派生类的一部分,派生无法直接访问它 您可能需要从Base的实例调用它,或者让Intermediate(或Derived)子类Base更改为:公共类Intermediate:B

这里是上下文(C#)

公共类基
{
公共方法()
{
}
}
公营中级
{
}
派生的公共类:中级
{
公共无效的某物()
{
SomeMethod();//错误:名称“SomeMethod”在当前上下文中不存在。
}
}
这是出乎意料的。
关于为什么以及如何修复它的任何解释?

中间版
没有对方法所在的
进行子类化,因此它不是
派生
类的一部分,
派生
无法直接访问它


您可能需要从
Base
的实例调用它,或者让
Intermediate
(或
Derived
)子类
Base

更改为:
公共类Intermediate:Base
为我“修复”它。提示:请避免多重标记。换句话说:在使用标签之前阅读标签的说明。你有一个非常基本的C语言问题;你不需要类或设计标签!啊!谢谢我在一个更复杂的环境中遇到了这个问题,并试图简化它,得到了同样的错误(因为愚蠢),然后发布了这个问题。这是简化上下文的解决方案,但在更复杂的场景中,这不是问题所在。尝试在真实世界代码中隔离问题。。。
public class Base
{
    public void SomeMethod()
    {

    }
}

public class Intermediate<TIntermediateTypeParam>
{

}

public class Derived<TDerivedTypeParam> : Intermediate<string>
{
    public void SomethingElse()
    {
        SomeMethod(); // Error: The name 'SomeMethod' does not exist in the current context.
    }
}