Java的getClass(),isAssignableFrom()等的c#等价物是什么?

时间:2009-10-13 08:00:29

标签: c# java class

我正在从Java转换为C#,代码类似于:

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

和其他地方使用Class.isAssignableFrom(Class c) ......和类似的方法

是否存在类比较和属性的直接等价表以及无法实现的代码?

<?>只是停止IDE关于泛型的警告。更好的解决方案将不胜感激)

3 个答案:

答案 0 :(得分:12)

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

查看System.Type类。它有methods you need

答案 1 :(得分:3)

首先,要获得课程(或在.NET中说,类型),您可以使用以下方法:

Type t = refChildNode.GetType();

现在你有了Type,你可以检查相等或继承。以下是一些示例代码:

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功能。可用方法的完整列表是here

答案 2 :(得分:1)

看看反射(http://msdn.microsoft.com/de-de/library/ms173183(VS.80).aspx)。

例如,您的代码为:

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