我想使用反射從派生類中獲取基類的名稱。如何從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