Определение типа во время выполнения - C#
Формулировка задачи:
Подскажите пожалуйста, как во время выполнения проверить содержит ли переменная типа оператор +? Именно проверить, а не использовать dynamic и писать следующее:
Проблема примера выше в том, что если тип не содержит оператор + то будет выбрасываться ошибка.
public static T Add<T> (T a, T b)
{
dynamic _a = a;
dynamic _b = b;
return _a + _b;
}Решение задачи: «Определение типа во время выполнения»
textual
Листинг программы
interface IAddable<T>
{
T Add(T other);
}
static T Add<T>(T a, T b) where T : IAddable<T>
{
return a.Add(b);
}
struct Complex : IAddable<T>
{
public int Real { get; }
public int Imaginary { get; }
public Complex(int real, int imaginary)
{
Real = real;
Imaginary = imaginary;
}
public Complex Add(Complex that)
{
return this + that;
}
public static Complex operator +(Complex a, Complex b)
{
return new Complex(a.Real + b.Real, a.Imaginary + b.Imaginary);
}
}