что делает [ConfigurationProperty («провайдеры»)]?

#c# #.net #.net-3.5 #.net-2.0

#c# #.net #.net-3.5 #.net-2.0

Вопрос:

Я читаю эту статью о provider patren. Пожалуйста, подскажите мне, что означает это утверждение:

  [ConfigurationProperty("providers")]
  

На самом деле я хочу узнать, что такое [] ? Я также видел такую строку в веб-методах с помощью [] . Что такое [] ? какая от этого польза? Я даже не знаю, как искать, как я должен это назвать? пожалуйста, направьте и помогите мне.

Спасибо

Комментарии:

1. Это синтаксис C # для украшения кода атрибутами: msdn.microsoft.com/en-us/library/z0w1kczw(VS.80).aspx .

Ответ №1:

[Foo(bla)] это синтаксис для атрибута — дополнительных метаданных о каком-либо типе или элементе (или даже самой сборке; или, действительно, параметрах). Вы можете написать свои собственные атрибуты, например, что-то вроде:

 public class ConfigurationPropertyAttribute : Attribute {
    public ConfigurationPropertyAttribute(string something) {...}
}
  

имя Attribute выводится, поэтому требуется только [ConfigurationProperty] . Строка "providers" используется в качестве аргумента конструктора, а также вы можете использовать назначения свойств, например:

 [Foo(123, "abc", Bar = 123)]
  

ищет тип FooAttribute or Foo с конструктором, который принимает int и a string , и имеет свойство, Bar которому можно присвоить int .

Большинство атрибутов ничего не делают напрямую, но вы можете написать код, который проверяет типы на наличие атрибутов (через отражение), что является очень удобным способом для библиотечного кода, знающего, как работать с типом.

Например:

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

это реконфигурирует XmlSerializer (который проверяет вышеуказанные атрибуты) для сериализации типа как:

 <abc name="blah"/>
  

где без атрибутов это было бы:

 <MyType><UserName>blah</UserName></MyType>
  

Ответ №2:

Если вы пишете что-то для чтения настроек из web или app .config, вы можете создать раздел конфигурации. Вот тут-то и появляется объявление ConfigurationProperty .

Проверьте http://msdn.microsoft.com/en-us/library/system.configuration.configurationpropertyattribute(v=VS.100).aspx