Определение типа во время выполнения - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как во время выполнения проверить содержит ли переменная типа оператор +? Именно проверить, а не использовать dynamic и писать следующее:
Листинг программы
  1. public static T Add<T> (T a, T b)
  2. {
  3. dynamic _a = a;
  4. dynamic _b = b;
  5. return _a + _b;
  6. }
Проблема примера выше в том, что если тип не содержит оператор + то будет выбрасываться ошибка.

Решение задачи: «Определение типа во время выполнения»

textual
Листинг программы
  1. interface IAddable<T>
  2. {
  3.    T Add(T other);
  4. }
  5.  
  6. static T Add<T>(T a, T b) where T : IAddable<T>
  7. {
  8.    return a.Add(b);
  9. }
  10.  
  11. struct Complex : IAddable<T>
  12. {
  13.    public int Real { get; }
  14.    public int Imaginary { get; }
  15.  
  16.    public Complex(int real, int imaginary)
  17.    {
  18.       Real = real;
  19.       Imaginary = imaginary;
  20.    }
  21.  
  22.    public Complex Add(Complex that)
  23.    {
  24.       return this + that;
  25.    }
  26.  
  27.    public static Complex operator +(Complex a, Complex b)
  28.    {
  29.       return new Complex(a.Real + b.Real, a.Imaginary + b.Imaginary);
  30.    }
  31. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы