我正在从Java转换为C#,代码类似于:
Class<?> refClass = refChildNode.getClass();
Class<?> testClass = testChildNode.getClass();
if (!refClass.equals(testClass)) {
....
}
和其他地方使用Class.isAssignableFrom(Class c)
......和类似的方法
是否存在类比较和属性的直接等价表以及无法实现的代码?
(<?>
只是停止IDE关于泛型的警告。更好的解决方案将不胜感激)
答案 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)
{
....
}