Здравствуйте, у меня проблема с дженериками, я создаю собственную структуру вершин для своей игры, и я хочу быть способным делать это с дженериками, чтобы я мог быстро изменить тип своей вершины.
вот как это выглядит сейчас:
public struct ETerrainVertex
{
public Vector3 Position;
public Vector3 Normal;
public Vector2 TextureCoordinate;
public static int SizeInBytes = (3 + 3 + 2) * 4;
public static VertexElement[] VertexElements = new VertexElement[]
{
new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),
new VertexElement(0, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0)
};
}
А потом я использую это так:
//I have to add a constraint to the T but an interface wont cut.
//where T : struct, thingThatAddsConstrainsPositionAndNormal
public sealed class EQuadNode<T> : IEclipse where T : struct
{
T foo;
foo.Position; //dont work
}
Но поскольку я использую поля, я не могу просто создать интерфейс и добавить его к ограничениям where, поскольку только интерфейсы могут иметь свойства.
Так есть ли способ сделать это?