Каковы эквиваленты c # Java getClass (), isAssignableFrom () и т. Д.?

Я перевожу с Java на C # и имею код, похожий на:

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

и в других местах использовать Class.isAssignableFrom(Class c)... и подобные методы

Есть ли таблица прямых эквивалентов для сравнения классов, свойств и кодов, где это невозможно?

(Это <?>просто, чтобы прекратить предупреждения от IDE о дженериках. Лучшее решение было бы желательно)

13.10.2009 08:00:28
Class=> Type. camelCase => PascalCase;)
Mehrdad Afshari 13.10.2009 08:08:01
3 ОТВЕТА
РЕШЕНИЕ
Type refClass = refChildNode.GetType();
Type testClass = testChildNode.GetType();
if (!refClass.Equals(testClass)) 
{
    ....
}

Посмотрите на класс System.Type. У него есть методы, которые вам нужны .

13
13.10.2009 08:03:32
Вы можете упомянуть метод Type.IsAssignableFrom
Simon 13.10.2009 08:05:29

Посмотрите на отражение ( http://msdn.microsoft.com/de-de/library/ms173183(VS.80).aspx ).

Например, ваш код будет:

Type refClass = refChildNode.GetType();
Type testClass = testChildNode.GetType();
if (refClass != testClass) 
{
    ....
}
1
13.10.2009 08:04:43

Во-первых, чтобы получить класс (или в .NET, Type ), вы можете использовать следующий метод:

Type t = refChildNode.GetType();

Теперь у вас есть тип, вы можете проверить равенство или наследование. Вот пример кода:

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. Полный список доступных методов находится здесь .

3
13.10.2009 09:41:38
Lol, извини DerMike, я не понял, как это звучит покровительственно!
Dunc 23.03.2011 09:04:34