C#中与Java的getClass()、isAssignableFrom()等方法相当的方法是什么?

10

我正在从Java翻译到C#,并且有类似以下代码:

Class<?> refClass = refChildNode.getClass();
Class<?> testClass = testChildNode.getClass();
if (!refClass.equals(testClass)) {
   // Do something
}

在其他地方,使用Class.isAssignableFrom(Class c)等方法进行类比较和属性检查。

是否有一个直接等价的表格用于类比较和属性,以及在这种情况下无法实现的代码解决方案?

(<?>只是为了防止IDE关于泛型的警告。如果有更好的解决方案将不胜感激)


10
Class => 类型。camelCase => PascalCase ;) - Mehrdad Afshari
3个回答

13
Type refClass = refChildNode.GetType();
Type testClass = testChildNode.GetType();
if (!refClass.Equals(testClass)) 
{
    ....
}

看一下 System.Type 类。它有你需要的 方法


6
你可能需要提到Type.IsAssignableFrom方法:http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx - Simon

3

首先,为了获取类(或在.NET中说,Type),您可以使用以下方法:

Type t = refChildNode.GetType();

现在你已经有了类型,可以检查相等性或继承关系。以下是一些示例代码:
public class A {}

public class B : A {}

public static void Main()
{
    Console.WriteLine(typeof(A) == typeof(B));                 // false
    Console.WriteLine(typeof(A).IsAssignableFrom(typeof(B)));  // true
    Console.WriteLine(typeof(B).IsSubclassOf(typeof(A)));      // true
}

这个使用了System.Reflection功能。所有可用方法的完整列表在这里


抱歉DerMike,我没意识到这听起来有多傲慢! - Dunc

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接