2009-10-13 11 views
8

Ja tłumaczenia z Java do C# i mieć kodu podobnego do:Jakie są ekwiwalenty C# Java getClass(), isAssignableFrom() itp.?

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

i gdzie indziej używać Class.isAssignableFrom(Class c) ... i podobne metody

Czy istnieje tabela bezpośrednich odpowiedników dla klasy comparsion i właściwości i kod - tam, gdzie nie jest to możliwe?

(The <?> jest po prostu przestać ostrzeżenia z IDE na temat leków generycznych. Lepszym rozwiązaniem byłoby mile widziane)

+8

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

Odpowiedz

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

rzucić okiem na klasy System.Type. Ma methods you need.

+6

możesz wymienić metodę Type.IsAssignableFrom: http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx – Simon

+0

@Simon dziękuję za tę notatkę. Naprawdę powinienem o tym wspomnieć. –

3

Po pierwsze, aby uzyskać klasę (lub .NET mówić Rodzaj) można wykorzystać następujące metody:

Type t = refChildNode.GetType(); 

Teraz masz typ, możesz sprawdzić równość lub dziedziczenie. Oto przykładowy kod:

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 
} 

ta wykorzystuje funkcjonalność System.Reflection. Pełna lista dostępnych metod to here.

+1

+1 za małe wprowadzenie do .NET mówić. – DerMike

+0

Lol, przykro mi DerMike Nie zdawałem sobie sprawy, jak brzmiało to protekcjonalnie! – Dunc

Powiązane problemy