#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
.