Подтвердить что ты не робот

Как вызвать пользовательский оператор с отражением

В моем небольшом проекте я использую классы System.Reflection для создания исполняемого кода. Мне нужно вызвать оператор + настраиваемого типа. Кто-нибудь знает, как я могу вызвать настраиваемый оператор пользовательского класса с использованием рефлекса С#?

4b9b3361

Ответ 1

Компилятор С# преобразует перегруженный оператор в функции с именем op_XXXX, где XXXX - это операция:

operator==op_Equality
operator!=op_Inequality
operator+op_Addition
operator-op_Subtraction
operator<op_LessThan
operator>op_GreaterThan
operator<=op_LessThanOrEqual
operator>=op_GreaterThanOrEqual
и т.д.

Итак, чтобы получить метод operator+ структуры DateTime, вам нужно написать:

MethodInfo mi = typeof(DateTime).GetMethod("op_Addition",
    BindingFlags.Static | BindingFlags.Public );

Ответ 2

typeof(A).GetMethod("op_Addition").Invoke(null, instance1, instance2);

Ответ 3

Считайте, чтобы ваш пользовательский оператор был property вашего Class. Затем войдите в property и value через reflection.

как

PropertyInfo pinfo = obj.GetType().GetProperty("CustomOperator", BindingFlags.Public | BindingFlags.Instance);
string customOperator = pinfo.GetValue(obj,null) as string;