Здравствуйте, betauser, Вы писали:
B>Есть .NET метод. С помощью рефлексии не могу найти, как определить этот метод он "virtual" или "override".
B>т.е. определить это метод является ли самого нижнего уровня или этот метод оверридится в потомке.
Второй способ подсмотрел в
http://stackoverflow.com/questions/2932421. Только он делает не совсем то, о чём вы просили.
MethodInfo a = typeof(object).GetMethod("GetHashCode");
MethodInfo b = typeof(string).GetMethod("GetHashCode");
// Способ 1
Console.WriteLine(
"a.IsNewSlot? {0}",
(a.Attributes & MethodAttributes.NewSlot) == MethodAttributes.NewSlot);
Console.WriteLine(
"a.IsVirtual? {0}", a.IsVirtual);
Console.WriteLine(
"b.IsNewSlot? {0}",
(b.Attributes & MethodAttributes.NewSlot) == MethodAttributes.NewSlot);
Console.WriteLine(
"b.IsVirtual? {0}", b.IsVirtual);
// Способ 2
Console.WriteLine(a.DeclaringType == b.DeclaringType);
Есть .NET метод. С помощью рефлексии не могу найти, как определить этот метод он "virtual" или "override".
т.е. определить это метод является ли самого нижнего уровня или этот метод оверридится в потомке.
Конечно, можно найти подобный метод в родительских классах сравнением, но может быть есть способ простого/правильного определения?