从嵌套类中获取周围类的名称

Xar*_*ugh 5 c# .net-2.0

我在外部类中有一个嵌套类,在内部类中有一个嵌套类,我想在运行时通过反射获取外部类的名称。

public abstract class OuterClass // will be extended by children
{
    protected class InnerClass // will also be extended
    {
        public virtual void InnerMethod()
        {
            string nameOfOuterClassChildType = ?;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这在c#中可能吗?

编辑:我应该补充一点,我想使用反射并从从 OuterClass 扩展的子类中获取名称,这就是原因,我在编译时不知道具体类型。

Pet*_*erg 4

像这样的东西应该解析出外部类的名称:

public virtual void InnerMethod()
{
    Type type = this.GetType();

    // type.FullName = "YourNameSpace.OuterClass+InnerClass"

    string fullName = type.FullName;
    int dotPos = fullName.LastIndexOf('.');
    int plusPos = fullName.IndexOf('+', dotPos);
    string outerName = fullName.Substring(dotPos + 1, plusPos - dotPos - 1);

    // outerName == "OuterClass", which I think is what you want
}
Run Code Online (Sandbox Code Playgroud)

或者,正如 @LasseVKarlsen 提议的那样,

string outerName = GetType().DeclaringType.Name;
Run Code Online (Sandbox Code Playgroud)

...这实际上是一个更好的答案。