Доступ к полю без создания экземпляра класса - PullRequest
0 голосов
/ 18 марта 2019

Скажем, у меня есть такой класс:

public class Offer1
    {
        private readonly Guid _id = new Guid("7E60g693-BFF5-I011-A485-80E43EG0C692");
        private readonly string _description = "Offer1";
    private readonly int _minWage = 50000;

    //Methods here
    }

Скажем, я хочу получить доступ к идентификатору, не создавая экземпляр класса. В нормальных ситуациях; Я бы просто сделал поле статическим и сделал бы это:

Offer1.ID //After changing the visibility to public and the name of the field to: ID

Тем не менее, я пытаюсь следовать DDD и TDD, и я считаю, что это осуждается по очевидным причинам, например проверяемость. Как я могу подойти к этому?

1) Store the ID in the configuration file and pass it to Offer1 in the constructor.  I believe this is a bad idea because it is domain information and should be in the domain model.
2) Use a static field as described above.
3) Something else

Это больше вопрос дизайна.

1 Ответ

2 голосов
/ 18 марта 2019

Я бы посоветовал вам использовать одно статическое поле для хранения Guid, и если каждый экземпляр Offer1 нуждается в поле или свойстве, чтобы идентификатор ссылался на статический Guid, например

public class Offer1
{
    internal static readonly Guid ID = new Guid(...);

    private Guid _id => ID;
    // or
    private readonly Guid _id = ID;
}

Преимущество варианта propety состоит в том, что не каждому экземпляру требуется память для Guid. Поскольку Guid является типом значения, с полем каждый экземпляр выделяет память для guid.

...