Определение типа во время выполнения - 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);
   }
}

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


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

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

11   голосов , оценка 3.909 из 5
Похожие ответы