如何知道班级的最低基数是某种类型

时间:2011-02-26 01:00:17

标签: c#

例如,有一个类型A,我怎么知道它的一个祖先是Windows.Forms.Form?

4 个答案:

答案 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派生自Form
Type aType=typeof(A);

...
bool isFormAnAncestorOfA = typeof(Form).IsAssignableFrom(aType);