11

我有一个自定义类的要求,我想让我的一个属性成为必需的。

如何使以下属性成为必需?

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

4 回答 4

28

如果您的意思是“用户必须指定一个值”,则通过构造函数强制它:

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;
    }
}
于 2012-05-29T06:53:17.727 回答
2

如果你的意思是你希望它总是被客户端代码赋予一个值,那么你最好的办法是在构造函数中要求它作为参数:

class SomeClass
{
    private string _documentType;

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

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

set您可以在属性的访问器主体或构造函数中进行验证(如果需要) 。

于 2012-05-29T06:53:40.290 回答
1

向属性添加必需的属性

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

有关自定义属性详细信息,请单击此处

于 2012-05-29T06:54:42.227 回答
0

我使用了另一种解决方案,不完全是您想要的,但对我来说很好,因为我首先声明了对象,并且根据具体情况我有不同的值。我不想使用构造函数,因为我不得不使用虚拟数据。

我的解决方案是在类上创建私有集(公共获取),您只能通过方法设置对象上的值。例如:

public void SetObject(string mandatory, string mandatory2, string optional = "", string optional2 = "") 
于 2016-11-09T08:51:31.040 回答