gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:29 25 4
gpt4 key购买 nike

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

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

这在 C# 中可行吗?

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

最佳答案

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

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
}

或者,正如@LasseVKarlsen 所建议的那样,

string outerName = GetType().DeclaringType.Name;

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

关于c# - 从嵌套类中获取周围类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com