Ответ 1
Они не совсем то же самое.
-
DeclaringType
возвращает тип, объявляющий метод. -
ReflectedType
возвращает объектType
, который использовался для извлечения метода.
Вот демо:
MemberInfo m1 = typeof(Base).GetMethod("Method");
MemberInfo m2 = typeof(Derived).GetMethod("Method");
Console.WriteLine(m1.DeclaringType); //Base
Console.WriteLine(m1.ReflectedType); //Base
Console.WriteLine(m2.DeclaringType); //Base
Console.WriteLine(m2.ReflectedType); //Derived
public class Base
{
public void Method() {}
}
public class Derived : Base { }
Заметьте, как последняя строка напечатала Derived
вместо Base
. Это потому, что, хотя Method
объявлен в Base
, мы использовали Derived
для получения объекта MemberInfo
.
Источник: MSDN