2015-06-01 3 views
2

У меня есть один класс, который содержит два списка определенных пользователем типов, категории и атрибута. Я пытаюсь получить компонент Атрибута для ссылки на компонент категории.Список, ссылающийся на второй список в C#

Мой список Категория выглядит следующим образом

private static List<Category> GetCategories() 
    { 
     var categories = new List<Category> { 
      new Category 
      { 
       CategoryID = 1, 
       CategoryName = "Chip Life Cycle" 
      }, 
      new Category 
      { 
       CategoryID = 2, 
       CategoryName = "Abstraction" 
      }, 
      new Category 
      { 
       CategoryID = 3, 
       CategoryName = "Properties" 
      }, 
      new Category 
      { 
       CategoryID = 4, 
       CategoryName = "Location" 
      }, 
     }; 

     return categories; 
    } 

А вот мой список атрибутов. Каждый атрибут имеет идентификатор категории, я хочу, чтобы следующее, CategoryName могло смотреть в список категорий, находить соответствующий идентификатор категории и принимать имя категории. Как мне это сделать?

private static List<Attribute> GetAttributes() 
    { 
     var Attributes = new List<Attribute> { 
      new Attribute 
      { 
       AttributeID = 1, 
       AttributeName = "Specification", 
       Description = "Insertion", 
       ImagePath="one.png", 
       F_in = 0, 
       F_out = 3, 
       CategoryID = 1, 
       CategoryName = **WHAT HERE?** 
      }, 
      new Attribute 
      { 
       AttributeID = 2, 
       AttributeName = "Design", 
       Description = "Insertion", 
       ImagePath="two.png", 
       F_in = 1, 
       F_out = 2, 
       CategoryID = 2, 
       CategoryName = **WHAT HERE?** 
      }, 
      new Attribute 
      { 
       AttributeID = 3, 
       AttributeName = "Clock Grid", 
       Description = "Location", 
       ImagePath="thirty_three.png", 
       F_in = 16, 
       F_out = 0, 
       CategoryID = 4 
       CategoryName = **WHAT HERE?** 
      }, 
     }; 
     return Attributes; 
} 
+1

Есть ли причина, по которой вы не просто ссылаетесь на «Категория» из «Атрибут»? –

+0

Если ваш собственный класс 'Category' действительно имеет только два свойства, возможно, было бы лучше использовать' enum' вместо пользовательского класса? Создание 'enum' гарантирует, что' 1' всегда имеет один и тот же «цикл жизненных циклов», тогда как с вашей текущей реализацией вы могли бы последовательно создать два разных Раздела с одинаковыми идентификаторами и разными Именами. –

+0

@OndrejTucny: Это кажется лучшим. Это похоже на схему реляционной базы данных, трансплантированную в C#. – recursive

ответ

4

Вы «денормализуете» некоторую информацию из категории в атрибут. В частности, вы повторяете CategoryID и CategoryName. Вместо этого, только сама ссылка на категорию, например.

new Attribute 
{ 
    AttributeID = 1, 
    AttributeName = "Specification", 
    Description = "Insertion", 
    ImagePath="one.png", 
    F_in = 0, 
    F_out = 3, 
    Category = category1, // category1 is an instance of Category 
}, 

Вы можете получить, например, имя первого атрибута типа:

string name = GetAttributes().First().Category.Name; 
+0

Я предлагал использовать LINK, но этот ответ намного лучше. –

Смежные вопросы