Обобщения в пользовательских разделах конфигурации - PullRequest
1 голос
/ 05 мая 2010

Я попытался создать собственный класс конфигурации, который бы продолжал так:

WatcherServiceInfoSection<TWatcherServiceDetailElement>

где TWatcherServiceDetailElement - это ConfigurationElement внутри него.

Теперь, когда я вызываю тип в области ConfigSections AppConfig, я получаю сообщение об ошибке:

An error occurred creating the configuration section handler for WatcherServiceInfo: 
Could not load type 'Library.Common.Utilities.ConfigurationHandler.WatcherServiceInfoSection<ASNDPService.Configuration.WatcherServiceDetailElement>' from assembly

Возможно ли то, что я делаю? Могу ли я иметь универсальные типы в атрибуте type для пользовательского элемента section?

EDIT

Кроме того, как насчет ConfigurationElementCollection объектов? Как в приведенном выше примере, как я мог сделать

[ConfigurationProperty("WatcherServiceDetails", IsRequired = true, 
IsDefaultCollection = true)]
[ConfigurationCollection(typeof(TWatcherServiceDetailElement), AddItemName = "WatcherServiceDetail")]
public WatcherServiceDetailCollection<TWatcherServiceDetailElement> WatcherServiceDetails

Я знаю, что параметры типа не разрешены для атрибутов, и это то, что я хочу знать, как это сделать.

1 Ответ

3 голосов
/ 05 мая 2010

необходимо указать полное название типа.

Сюда входит полное имя универсального типа, за которым следует ` и количество параметров универсального типа с полными именами параметров типа в [...]

, например

<component id="FooRetriever"
           service="Namespace.IRetrievable`2[[Namespace.Foo, Assembly],[System.String]], Assembly"
           type="Namespace.FooRetriever, Assembly"/>

Я постараюсь привести более разумный пример.

см. http://theburningmonk.com/2010/03/castle-windsor-tips-specifying-generic-types-in-config-file/

также см. Включение универсального класса в файл Unity App.Config

...