Доступ к статическим членам вставляемого <.> класса T - C#

Узнай цену своей работы

Формулировка задачи:

Есть некий универсальный класс
Листинг программы
  1. public class MeshStd<T>
  2. {
  3. List<T> vertices = new List<T>();
  4. public VertexBuffer buffer;
  5. public void AddTrinagle(T A, T B, T C)
  6. {
  7. vertices.Add(A);
  8. vertices.Add(B);
  9. vertices.Add(C);
  10. }
  11. public void Clear()
  12. {
  13. vertices.Clear();
  14. }
  15. public void CreateBuffer()
  16. {
  17. buffer = new VertexBuffer(Game1.p.GraphicsDevice,
  18. T.VertexDeclaration, vertices.Count, BufferUsage.WriteOnly);
  19. T[] array = vertices.ToArray();
  20. buffer.SetData<T>(0, array, 0, vertices.Count, T.VertexDeclaration.VertexStride);
  21. }
  22. }
И всё бы ничего, только вот это место
T.VertexDeclaration
ругается, мол
Ошибка 1 "T" является "параметр-тип", который недопустим в данном контексте d:\UnderConstruct\Construct\Construct\Game1.cs 165 17 Construct
Что делать? Как обратиться к статическому члену подставляемого класса? Я искал но ничего не нашёл

Решение задачи: «Доступ к статическим членам вставляемого <.> класса T»

textual
Листинг программы
  1. public class BaseType<T>
  2.         where T : BaseType<T>
  3.     {
  4.         public Guid Id;
  5.         public static Dictionary<Guid,T> Items = new Dictionary<Guid, T>();
  6.  
  7.         public BaseType()
  8.         {
  9.             Id = Guid.NewGuid();
  10.             Items.Add(Id, (T)this); // тут будет ошибка при привидении типа!
  11.         }
  12.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы