2009-10-13 4 views
8

Je traduis de Java à C# et avoir un code similaire à:Quels sont les équivalents C# de Java getClass(), isAssignableFrom(), etc.?

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

et utiliser ailleurs Class.isAssignableFrom(Class c) ... et des méthodes similaires

Y at-il une table d'équivalents directs pour comparsion de classe et les propriétés et le code -arounds où ce n'est pas possible?

(Le <?> est simplement d'arrêter les avertissements de l'IDE sur les médicaments génériques. Une meilleure solution serait appréciée)

+8

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

Répondre

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

Jetez un oeil sur la classe System.Type. Il a methods you need.

+6

vous pouvez mentionner la méthode Type.IsAssignableFrom: http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx – Simon

+0

@Simon merci pour cette note. Je devrais vraiment le mentionner. –

3

Tout d'abord, pour obtenir la classe (ou parler .NET, type) vous pouvez utiliser la méthode suivante:

Type t = refChildNode.GetType(); 

Maintenant vous avez le type, vous pouvez vérifier l'égalité ou l'héritage. Voici un exemple de code:

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 
} 

Ceci utilise la fonctionnalité System.Reflection. La liste complète des méthodes disponibles est here.

+1

+1 pour la petite introduction au langage .NET. – DerMike

+0

Lol, désolé DerMike Je ne me rendais pas compte à quel point cela paraissait condescendant! – Dunc

Questions connexes