我正在阅读这篇有关提供程序模式的文章。请指导我这个语句的含义:
[ConfigurationProperty("providers")]
实际上,我想了解什么是 [] ? 我在 web methods 上也看到了这样一行代码:[]. [] 是什么?它们有什么用?我甚至不知道该搜索什么来命名它们。请指导和帮助我。
谢谢
[ConfigurationProperty("providers")]
实际上,我想了解什么是 [] ? 我在 web methods 上也看到了这样一行代码:[]. [] 是什么?它们有什么用?我甚至不知道该搜索什么来命名它们。请指导和帮助我。
谢谢
[Foo(bla)]
是属性的语法 - 关于某个类型或成员(甚至是汇编本身;或者参数)的附加元数据。您可以编写自己的属性,例如这样一个:
public class ConfigurationPropertyAttribute : Attribute {
public ConfigurationPropertyAttribute(string something) {...}
}
名称Attribute
是可以推断的,所以只需要使用[ConfigurationProperty]
。字符串"providers"
被用作构造函数参数,也可以使用属性赋值,例如:
[Foo(123, "abc", Bar = 123)]
查找类型 FooAttribute
或 Foo
,构造函数需要接受一个 int
和一个 string
,并且具有可以分配为 int
的属性 Bar
。
大多数属性本身并不做任何事情,但是您可以编写代码通过反射来检查类型是否具有某些属性,这是一种非常方便的库代码了解如何使用类型的方式。
例如:
[XmlType("abc"), XmlRoot("abc")]
public class MyType {
[XmlAttribute("name")]
public string UserName {get;set;}
}
这将重新配置XmlSerializer
(它检查上述属性)以将类型序列化为:
<abc name="blah"/>
如果没有属性,它将是这样的:
<MyType><UserName>blah</UserName></MyType>
ConfigurationProperty
的作用所在。