例如,有一个类型A,我怎么知道它的一个祖先是Windows.Forms.Form?
答案 0 :(得分:2)
您可以在类型:
上使用IsSubclassOf方法var myType = typeof(Form1);
var formType = typeof(Form);
Console.WriteLine(myType.IsSubclassOf(formType)); //outputs 'true'
答案 1 :(得分:0)
像这样(未经测试):
var x = yourValue;
var t = x.GetType();
var p = t;
while (p.BaseType != null)
{
p = t.BaseType;
}
如果您正在寻找特定类型,而不仅仅想知道基础是什么,那么您需要对其进行测试。
var myX = x as WhateverType;
if (myX != null)
{
// Use myX
}
答案 2 :(得分:0)
在.NET中,它的“最低祖先”将永远是通用基类Object
。你能改一下你的问题吗?
答案 3 :(得分:0)
以下是检查类型之间的祖先关系的一种快捷方式。也就是说,如果Form类型的变量可以引用A:
,则A派生自FormType aType=typeof(A);
...
bool isFormAnAncestorOfA = typeof(Form).IsAssignableFrom(aType);