我想使用反射从派生类中获取基类的名称。如何从C派生类中获取基类的名称
0
A
回答
6
Type type = typeof(Derived);
Type baseType = type.BaseType;
if(baseType != null) {
string baseTypeName = baseType.Name;
Console.WriteLine(baseTypeName);
}
else {
Console.WriteLine("No base type.");
}
另外,如果你想完全合格的名称,你可以使用Type.FullName
。
1
我不确定你的问题意味着什么。您已经得到了一些答案,向您展示了如何从派生类型中获取基类型。
Type baseType = type.BaseType;
为了走另外一条路,如果你有一个基本类型的参考,你可以使用的GetType来获取动态类型:
BaseClass foo = ....;
Type type = foo.GetType();
2
如果你只是想简单的名字:
var name = typeof(DerivedType).BaseType.Name;
或者,如果你想要的装配合格的名称:
var name = typeof(DerivedType).BaseType.AssemblyQualifiedName;
如果你想要的代码不会抛出一个空引用异常:
var type = typeof(DerivedType);
var parentType = type.BaseType;
if(parentType != null)
{
var name = parentType.Name;
var assemblyQualifiedName = parentType.AssemblyQualifiedName;
}
+0
它的'Type.BaseType'不是'Type.BaseClass'。 – jason 2011-03-07 21:11:49
2
BaseClassInstance.GetType().BaseType.FullName;
应该做的伎俩
1
一些反射可能会做的魔力:
var type = this.GetType();
while(type.BaseType != typeof(object))
{
type = type.BaseType;
}
Console.WriteLine(type.Name);
2
你可以得到它像这样:
class BaseClass { }
class DerivedClass : BaseClass { }
[Test]
public void TestBaseName()
{
var a = new DerivedClass();
Assert.AreEqual(a.GetType().BaseType.Name, "BaseClass");
}
+0
谢谢。编写示例代码时,我发现NUnit可以大大提供帮助,因为在发布之前,我可以验证它实际上是否有效。 – 2011-03-07 21:31:10
0
ChildClass cc = new ChildClass();
string baseNameClass = cc.GetType().BaseType.FullName;
相关问题
- 1. 如何从C#中的基类获取派生类MEMBERS?
- 2. 如何从基类中派生类名称
- 3. 从C#中的基类获取派生类型?
- 4. C++从派生类指针获取基类对象?
- 5. 如何从基类中获取类的名称?
- 6. C++ - 派生类到基类
- 7. C#继承。从基类派生类
- 8. 的Python:从派生类中获取基类值
- 9. 从基类INITIALISE派生类
- 10. C#反射:如何从基类中获得派生类的属性
- 11. 获取从基类派生的所有类型
- 12. 使用在基类派生类,而派生类的基类
- 13. 如何检查派生类中对象的类型名称?
- 14. 通过基指针获取派生类?
- 15. 如何从C++派生类调用基类方法?
- 16. C++如何从多个派生类调用基类方法?
- 17. 派生类访问的基类 - 如何?
- 18. 如何在派生类的c#中设置基类的值wpf
- 19. C#从类的名称获取枚举
- 20. 地图类型名称派生类
- 21. 从C#中的基类访问派生类的属性#
- 22. 如何禁止C++派生类从基地获得,而是从另一个派生类
- 23. 从派生自同一类的类派生的C++子类
- 24. 如何从派生类中的基类访问变量的值?
- 25. 如何从派生自RouteBase类的类获取站点设置
- 26. 在目标c中指派派生类的基类指针
- 27. 如何在Fortran中获取派生类型组件的编号,名称和值
- 28. 从扩展类中获取类名称
- 29. C++派生类访问基类成员
- 30. 如何从基类派生并在C#中实现接口?
也许我误解了它,但你的问题和标题似乎相互矛盾。 – 2011-03-07 20:57:51
如果我的问题不清楚,我很抱歉,但我有我正在寻找的答案。无论如何感谢 – 2011-03-07 22:49:18