Учитывая этот фрагмент кода, как узнать, используя переменную "i", что метод не был получен из базовых классов, но он был объявлен в наиболее преуменьшенном классе?Например, мне не нужны никакие методы GetType (), ToString () и т. Д. Для печати.
MethodInfo[] methods = Type.GetType(
"Probabilities_Theory.ProbabilitiesTheory").GetMethods();
foreach (var i in methods)
{
if (!i.IsVirtual) // another condition needed
Console.WriteLine(i);
}
Мне не нужно знать, был ли он переопределен или нет, потому чтонапример, метод GetType () не является виртуальным по этой причине.Но я все еще не хочу, чтобы GetType () печатался примерно.
Что характерно для GetType () и других виртуальных методов, так это то, что все они не были объявлены в самом низкокачественном классе.
Я мог бы сделать это следующим образом:
if (i.DeclaringType == typeof(ProbabilitiesTheory))
Console.WriteLine(i);
Но я хочу, чтобы мой код был более автоматическим, более программным и прочим.Как будто никто не знает, какой это тип.