【发布时间】:2018-10-14 03:30:11
【问题描述】:
我的问题是关于在 C# 中使用自定义属性进行验证。
我不太明白验证的工作原理。我已经声明了一个包含验证规则的属性,但是当错误应该被抛出时它不是。
属性:
[AttributeUsage(AttributeTargets.Property)]
public class NotNullAttribute : Attribute
{
public bool IsValid(object value)
{
if (value is string && (string)value != "")
{
return false;
}
return true;
}
}
在属性内部,我检查属性是否为字符串类型以及其值是否为空字符串,因为这是我必须检查的内容。
任务是检查属性是否为string,如果是空字符串则无效,否则无效。
我的Person班级:
class Person
{
[NotNull]
public string Name { get; set; }
}
我在这里应用自定义属性。
主要方法:
class Program
{
static void Main(string[] args)
{
Person p1 = new Person();
p1.Name = "";
Console.WriteLine("Validation done");
Console.ReadKey();
}
}
这是我实例化Person 类并将空字符串分配给Name 属性的地方。我猜这就是应该抛出错误的地方。
所以我的问题是为什么不应用验证?我应该以某种方式从它自身的属性中调用IsValid 方法吗?
我会对此进行一些解释,提前谢谢!
【问题讨论】:
标签: c# validation attributes