2009-10-13 19 views
8

estoy traduciendo de Java a C# y tengo un código similar a:¿Cuáles son los equivalentes C# de getClass() de Java, isAssignableFrom(), etc.?

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

y en otras partes utilizar Class.isAssignableFrom(Class c) ... y métodos similares

¿Hay una tabla de equivalencias directas para comparsion clase y propiedades y el código - ¿Por qué esto no es posible?

(El <?> es simplemente dejar de advertencias acerca de la IDE genéricos. Una mejor solución sería apreciada)

+8

'Class' =>' Tipo'. camelCase => PascalCase;) –

Respuesta

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

echar un vistazo a la clase System.Type. Tiene methods you need.

+6

es posible que desee mencionar el método Type.IsAssignableFrom: http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx – Simon

+0

@Simon gracias por esta nota. Realmente debería mencionarlo. –

3

En primer lugar, para obtener la clase (o en hablar .NET, Tipo), puede utilizar el siguiente método:

Type t = refChildNode.GetType(); 

Ahora que tiene el Tipo, puede verificar la igualdad o la herencia. Aquí hay algunos ejemplos de código:

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 
} 

Esto usa la funcionalidad System.Reflection. La lista completa de métodos disponibles es here.

+1

+1 para la pequeña introducción a .NET speak. – DerMike

+0

¡Jaja, lo siento, DerMike! No me di cuenta de lo condescendiente que sonaba. – Dunc

Cuestiones relacionadas