[ConfigurationProperty("provider")]做了什么?

use*_*510 5 .net c# .net-3.5 .net-2.0

我正在阅读关于提供者patren的这篇文章.请指导我这句话是什么:

 [ConfigurationProperty("providers")]
Run Code Online (Sandbox Code Playgroud)

其实我想学习什么是[]?我还在[]的Web方法上看到了这样的一行.什么是[]?有什么用?我甚至不知道要搜索我应该命名的内容吗?请指导并帮助我.

谢谢

Mar*_*ell 5

[Foo(bla)]是属性的语法 - 关于某个类型或成员(甚至是程序集本身;或实际上是参数)的附加元数据.您可以编写自己的属性,例如:

public class ConfigurationPropertyAttribute : Attribute {
    public ConfigurationPropertyAttribute(string something) {...}
}
Run Code Online (Sandbox Code Playgroud)

Attribute推断出名称,因此只[ConfigurationProperty]需要.该字符串"providers"用作构造函数参数,您还可以使用属性赋值,例如:

[Foo(123, "abc", Bar = 123)]
Run Code Online (Sandbox Code Playgroud)

寻找一个类型FooAttributeFoo与一个构造函数的intstring,并有一个属性Bar,可以分配一个int.

大多数属性不直接执行任何操作,但您可以编写检查属性类型的代码(通过反射),这是一种非常方便的库代码知道如何使用类型的方法.

例如:

[XmlType("abc"), XmlRoot("abc")]
public class MyType {
    [XmlAttribute("name")]
    public string UserName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

这个重新配置XmlSerializer(检查上述属性)将类型序列化为:

<abc name="blah"/>
Run Code Online (Sandbox Code Playgroud)

它没有属性的地方:

<MyType><UserName>blah</UserName></MyType>
Run Code Online (Sandbox Code Playgroud)