C # Словарь объектов - PullRequest
0 голосов
/ 02 мая 2018

Какова лучшая структура данных для следующего: у меня есть пользовательский объект

public class Package
{
   private Guid packageId;
   private List<Guid> contracts;
   private List<Guid> states;
   public List<Guid>Contracts {get;set;}
   public List<Guid>States {get;set;}
   public Guid PackageId { get; set; }
   public Package()
   {
    ....
   }
}

У меня будет List<Packages>, который содержит и свойства, имеющие общий идентификатор (PackageId). Я буду добавлять направляющие к различным свойствам (состояние, контракт и т. Д.) В объектах пакета во время выполнения (не все в init). Как я могу наилучшим образом структурировать класс, чтобы позволить мне добавлять различные свойства объекта после его инициализации? Пример, структура, чтобы я мог выполнить следующее:

var List<Package> Packages = new List<Package>;
Packages[aGuid].Contracts.Add(Guid);

1 Ответ

0 голосов
/ 02 мая 2018

Если вы хотите использовать эту структуру, вы должны использовать Dictionary<Guid, Package>:

public class Package
{
   private Guid packageId;
   private List<Guid> contracts;
   private List<Guid> states;
   public List<Guid>Contracts {get;set;}
   public List<Guid>States {get;set;}
   public Guid PackageId { get; set; }
   public Package()
   {
       //Remember to initialize your List<T>'s here
   }
}

Создать Dictionary:

var packages = new Dictionary<Guid, Package>();

Затем вы создаете новый пакет:

var package = new Package();

Добавить в словарь:

packages[package.PackageId] = package;

-или-

packages.Add(package.PackageId, package);

Разница между двумя вышеупомянутыми заключается в том, что .Add сгенерирует исключение, если уже существует PackageId, тогда как версия [] просто перезапишет его.

И теперь вы можете получить к нему доступ по своему желанию:

packages[SomePackageId].Contracts.Add(Guid.NewGuid());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...