Dinâmica C # 4.0: uma solução potencial de alto desempenho para genéricos numéricos?
Depois de me deparar com esse problema ao tentar implementar um genéricoVector2<int/float/double>
em c #, fiz várias investigações sobre esse problema, também descritas nesta pergunta:
Genéricos menos genéricos? Uma possível solução para aritmética em genéricos C #
Esses links contêm mais informações básicas e abordagens fascinantes de soluções:
http://www.yoda.arachsys.com/csharp/genericoperators.html
http://www.codeproject.com/KB/cs/genericnumerics.aspx
Agora que o C # 4.0 saiu com seu novo e versátildynamic
tipo, minha pergunta para a brilhante comunidade SO, é a seguinte: é uma ferramenta que poderia ser usada talvez para criar Vector / Matrix / etc de alto desempenho, genérico. tipos numéricos?
Claramente, um Vector2 poderia ser construído da seguinte maneira:
public struct Vector2
{
public dynamic X;
public dynamic Y;
public Vector2(dynamic x, dynamic y)
{
this.X = x;
this.Y = y;
}
public static Vector2 operator+(Vector2 a, Vector2 b)
{
return new Vector2(a.X + b.X, a.Y + b.Y);
}
}
mas com essa abordagem, não temos restrição de tipo aqui, então você pode fazer umaVector2(3, 12.4572)
. Existe uma maneira de misturar membros dinâmicos com um parâmetro de tipoVector2<int>
para executar nossas operações matemáticas, como seria feito comint
s?
Talvez alguma forma de fundição possa ser usada para garantirthis.X
é umT
, embora eu não saiba como isso funcionaria.