C # estructura abstracta
¿Cómo puedo lograr la herencia (o similar) con estructuras en C #? Sé que una estructura abstracta no es posible, pero necesito lograr algo similar.
Lo necesito como una estructura porque tiene que ser un tipo de valor. Y necesito herencia porque necesito una matriz genérica y los métodos que puedo garantizar están allí.
Creo que un ejemplo será muy útil, así que aquí hay un código que no se compilará, pero muestra lo que quiero lograr;
abstract struct Vertex
{
abstract int SizeInBytes;
abstract void SetPointers();
}
struct ColorVertex : Vertex
{
Vector3 Position;
Vector4 Color;
override int SizeInBytes //static
{
get { return (3 + 4) * 4; }
}
override void SetVertexPointers() //static
{
...
}
}
class main
{
static void main()
{
Vertex[] verts = new Vertex[3];
for(int i = 0; i < 3; i++)
verts[i] = new ColorVertex();
verts[0].SetVertexPointers(); //should call ColorVertex.SetVertexPointers
externalAPIcall(verts);
}
}
EDITAR
La razón por la que necesito tipos de valores es para poder hacer una matriz de ellos y pasarlos a OpenGL como un búfer de vértices. Para esto, los datos deben estar contenidos directamente en esta matriz.
Me sorprendería si esto simplemente no fuera posible lograrlo.