Определение типа во время выполнения - 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д