Alguma maneira elegante de operar com tipos genéricos? [duplicado

Esta pergunta já tem uma resposta aqui:

Existe uma restrição que restringe meu método genérico a tipos numérico 20 respostas

Estou trabalhando em um pequeno projeto educacional em que precisamos implementar umn matriz dimensional. Dependendo do contexto, essa matriz deve funcionar com nosso próprioComplexNumber struct ou comSystem.Double e para exemplos muito simples, com tipos integrais (principalmenteSystem.Int32).

evido à natureza do aplicativo, não somos obrigados a implementar um desempenho extremamente rápid

minha primeira ideia foi, portanto, implementar umMatrix<T> OndeT precisaria, de alguma forma, ser restrito a"números".

O problema óbvio de fazer isso é que não há como, no momento, restringir o tipo genéricoT com operadores definidos. Também não vejo uma maneira fácil de re-restringirT para tipos razoáveis.

As minhas perguntas são:

Pode alguém por favor me aponte na direção de umelegantaneira de fazer operações matemáticas com tipos genéricos que não comprometam muito o desempenho e de alguma forma fazer isso funcionar com tipos incorporados (se possível

E se Eric sempre lê isso, esse recurso (restringindo tipos genéricos por operadores definidos) aparece em versões hipotéticas futuras de reuniões de design em C # e já esteve perto de torná-lo no idioma?

Sei que é mais fácil e melhor implementar umComplexMatrix digite e crie wrappers para cada "subtipo" de matriz (duplo, integral etc.) e pague os custos de desempenho das conversões entre o nosso tipo complexo e o tipo de elemento da matriz. Esta questão é mais por curiosidade sobre como alguém implementaria um cenário semelhant

questionAnswers(4)

yourAnswerToTheQuestion