Какой-нибудь элегантный способ работы с общими типами? [Дубликат]

На этот вопрос уже есть ответ:

Есть ли ограничение, ограничивающее мой универсальный метод числовыми типами? 20 ответов

Я работаю в небольшом образовательном проекте, где мы должны реализоватьn -мерная матрица. В зависимости от контекста, эта матрица должна работать с нашей собственной встроеннComplexNumber struct или сSystem.Double и для очень простых примеров, с целочисленными типами (в основномSystem.Int32).

В связи с характером приложения мы не обязаны обеспечивать молниеносную производительность.

Моя первая идея заключалась в том, чтобы реализоватьMatrix<T> гдеT как-то нужно ограничить "Номера".

Очевидная проблема в этом состоит в том, что сейчас в языке нет способа ограничить общий типT с определенными операторами. Также я не вижу простой способ перезапуститьT разумным типам.

Мои вопросы:

Может кто-нибудь, пожалуйста, укажите мне в направлении Элегантный способ выполнения математических операций с универсальными типами, которые не слишком снижают производительность, и как-то заставить его работать со встроенными типами (если это возможно).

Если Эрик когда-нибудь читает это, встречается ли когда-нибудь эта функция (ограничение универсальных типов определенными операторами) в гипотетических будущих версиях совещаний по разработке C #, и была ли она когда-нибудь близка к переводу на язык?

Я знаю, что проще и лучше реализоватьComplexMatrix введите и создайте обертки вокруг него для каждого «подтипа» матрицы (двойной, целочисленный и т. д.) и оплатите затраты на производительность преобразований между нашим сложным типом и любым типом элементов матрицы. Этот вопрос больше интересует, как кто-то может реализовать подобный сценарий.

Ответы на вопрос(4)

Ваш ответ на вопрос