Вопрос по c# – Как сделать свойство требуется в C #?

9

У меня есть требование в пользовательском классе, где я хочу сделать одно из своих свойств обязательным.

Как я могу сделать следующее свойство требуется?

public string DocumentType
{
    get
    {
        return _documentType;
    }
    set
    {
        _documentType = value;
    }
}
Что вы подразумеваете под "сделать свойство обязательным"? Aykut Çevik
"сделать свойство обязательным" означает, что значение требуется в свойстве, его нельзя оставлять пустым. Shailender Singh

Ваш Ответ

4   ответа
21

Если вы имеете в виду & quot; пользователь должен указать значение & quot ;, а затем принудительно его ввести с помощью конструктора:

public YourType(string documentType) {
    DocumentType = documentType; // TODO validation; can it be null? blank?
}
public string DocumentType {get;private set;}

Теперь вы не можете создавать экземпляр без указания типа документа, и он не может быть удален после этого времени. Вы также можете позволитьset но подтвердите:

public YourType(string documentType) {
    DocumentType = documentType;
}
private string documentType;
public string DocumentType {
    get { return documentType; }
    set {
        // TODO: validate
        documentType = value;
    }
}
2

Если вы имеете в виду, вы хотите этоalways чтобы клиенту было присвоено значение, то лучше всего указывать его в качестве параметра в конструкторе:

class SomeClass
{
    private string _documentType;

    public string DocumentType
    {
        get
        {
            return _documentType;
        }
        set
        {
            _documentType = value;
        }
    }

    public SomeClass(string documentType)
    {
        DocumentType = documentType;
    }
}

Вы можете сделать свою проверку & # x2013; если вам это нужно & # x2013; либо в собственностиset тело доступа или в конструкторе.

1

Добавьте обязательный атрибут в propety

Required(ErrorMessage = "DocumentTypeis required.")]
public string DocumentType
        {
            get
            {
                return _documentType;
            }
            set
            {
                _documentType = value;
            }
        }

Для детализации пользовательских атрибутовКликните сюда

RequiredAttribute не имеет языковой поддержки; некоторые инфраструктуры пользовательского интерфейса могут добавить некоторый конкретный смысл к такому атрибуту, но это полностью зависит от библиотеки
0

Я использовал другое решение, не совсем то, что вы хотите, но у меня сработало нормально, потому что я сначала объявляю объект и в зависимости от конкретной ситуации у меня разные значения. Я не хотел использовать конструктор, потому что мне пришлось использовать фиктивные данные.

Мое решение состояло в том, чтобы создать частные наборы для класса (public get), и вы можете устанавливать значения объекта только методами. Например:

public void SetObject(string mandatory, string mandatory2, string optional = "", string optional2 = "") 

Похожие вопросы