Имя шаблона и интерфейса для двунаправленной неявной перегрузки оператора - PullRequest
2 голосов
/ 15 сентября 2011

Недавно я обнаружил чудеса неявной перегрузки операторов в C #. Мне было интересно, если у вас есть оба "пути" неявной перегрузки операторов, такие как:

public static implicit operator FooType(int num)
{
    return new FooType(num);
}

public static implicit operator int(FooType fooType)
{
    return fooType.IntValue;
}
  1. Есть ли название для этого шаблона проектирования?
  2. Есть ли предопределенный интерфейс .NET, который я могу использовать, скажем, ICastable<int>?

Ответы [ 2 ]

6 голосов
/ 15 сентября 2011
  1. Не то чтобы я знал.

  2. Вы могли бы рассмотреть возможность реализации IConvertible. (Если ваш класс также может быть по сравнению с вещами, вы можете рассмотреть возможность реализации IComparable<T>.)

2 голосов
/ 15 сентября 2011
  1. Если это так, я никогда не слышал об этом
  2. Операторы являются статическими конструкциями и разрешаются во время компиляции. Они не могут быть частью какого-либо интерфейса
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...