Учитывая этот фрагмент кода, как я могу узнать, используя переменную «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);
Но я хочу, чтобы мой код был более автоматическим, более программным и так далее. Как будто не знаешь, что это за тип.
MethodInfo
. Должен быть один, говорящий, какой тип объявил этот метод. - person   schedule 25.11.2018