我在自定义类中有要求,我想要使我的属性之一。
如何制作以下属性?
public string DocumentType
{
get
{
return _documentType;
}
set
{
_documentType = value;
}
}
答案 0 :(得分:21)
如果您的意思是"用户必须指定一个值",然后通过构造函数强制它:
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;
}
}
答案 1 :(得分:2)
如果您的意思是希望始终通过客户端代码获得值,那么您最好的选择是将其作为构造函数中的参数:
class SomeClass
{
private string _documentType;
public string DocumentType
{
get
{
return _documentType;
}
set
{
_documentType = value;
}
}
public SomeClass(string documentType)
{
DocumentType = documentType;
}
}
您可以在属性的set
访问器主体或构造函数中进行验证 - 如果需要 -
答案 2 :(得分:1)
将必需属性添加到属性
Required(ErrorMessage = "DocumentTypeis required.")]
public string DocumentType
{
get
{
return _documentType;
}
set
{
_documentType = value;
}
}
对于自定义属性详细信息Click Here
答案 3 :(得分:0)
我使用了另一种解决方案,不完全是你想要的,但对我来说很好,因为我先声明对象,并根据具体情况我有不同的值。我不想使用构造函数,因为我不得不使用虚拟数据。
我的解决方案是在类上创建私有集(public get),您只能通过方法设置对象的值。例如:
public void SetObject(string mandatory, string mandatory2, string optional = "", string optional2 = "")