Перегрузка - это то, что происходит, когда у вас есть два метода с одинаковым именем, но разными сигнатурами.
Так что, если мы можем, метод равен override
проверкой имени метода, не болееone.
Я бы создал метод расширения IsOverloads
, чтобы сделать его.
, используя метод IsOverloads
, необходимо указать как минимум два параметра
- класс
Type
. - проверка имени метода
Использование отражения для получения информации о методе из класса, а затем проверка имени метода больше единицы означает, что метод перегружен.
public static class Ext {
public static bool IsOverloads(this Type type,string methodName)
{
return IsOverloads(type, methodName, BindingFlags.Public | BindingFlags.Instance);
}
public static bool IsOverloads(this Type type,
string methodName,
BindingFlags flags)
{
var info = type.GetMethods(flags);
return info.Where(o1 => o1.Name == methodName).Count() > 1;
}
}
Вот простой
public class Program
{
public void Test() { }
public void Test(int a) { }
public void TestNo(int a) { }
public static void Main()
{
Console.WriteLine(typeof(Program).IsOverloads("Test")); //True
Console.WriteLine(typeof(Program).IsOverloads("TestNo")); //false
}
}
c # онлайн