我已经尝试了很多次,但是仍然无法理解自定义属性的用法(我已经浏览了很多链接)。
谁能给我解释一个带有代码的自定义属性的非常基本的示例吗?
尽管创建自定义属性的代码非常简单,但是了解什么是属性非常重要:
属性是编译到程序中的元数据。属性本身不会为类,属性或模块添加任何功能,而只是添加数据。但是,使用反射,可以利用这些属性来创建功能。
因此,例如,让我们来看一下Microsoft 企业库中的验证应用程序块。如果查看代码示例,将会看到:
/// <summary> /// blah blah code. /// </summary> [DataMember] [StringLengthValidator(8, RangeBoundaryType.Inclusive, 8, RangeBoundaryType.Inclusive, MessageTemplate = "\"{1}\" must always have \"{4}\" characters.")] public string Code { get; set; }
从上面的代码段中,您可能会猜到,只要更改了代码,就会始终根据Validator的规则进行验证(在示例中,至少包含8个字符,最多8个字符)。但是事实是,属性什么也没做。如前所述,它仅将元数据添加到属性。
但是,企业库提供了Validation.Validate一种可以查看您的对象的方法,对于每个属性,它都会检查内容是否违反该属性所通知的规则。
Validation.Validate
因此,这就是您应该考虑的属性-一种将数据添加到代码中的方式,以后可能会被其他方法/类/等使用。