Возможен ли универсальный элемент BehaviorExtensionElement?

У меня есть некоторые поведения для служб WCF, которые я просто хочу зарегистрировать; конфигурации нет. Я решил, что могу каждый раз пропускать создание потомка BehaviorExtensionElement, используя дженерики:

public class SimpleBehaviorExtensionElement<TBehavior> : BehaviorExtensionElement
    where TBehavior: new()
{
    protected override object CreateBehavior()
    {
        return new TBehavior();
    }

    public override Type BehaviorType
    {
        get { return typeof(TBehavior); }
    }
}

И в Web.config:

<behaviorExtensions>
  <add name="myBehavior2"
    type="WcfService1.SimpleBehaviorExtensionElement`1[[WcfService1.MyBehavior,
      WcfService1]], WcfService1"/>
</behaviorExtensions>

WcfService1.MyBehavior существует, реализует IServiceBehavior и был протестирован.

Но когда я ссылаюсь на в разделе поведения файла конфигурации, я получаю:

Произошла ошибка при создании

<behaviorExtensions>
  <add name="myBehavior2"
    type="WcfService1.SimpleBehaviorExtensionElement`1[[WcfService1.MyBehavior,
      WcfService1]], WcfService1"/>
</behaviorExtensions>

WcfService1.MyBehavior существует, реализует IServiceBehavior и был протестирован.

Но когда я ссылаюсь на в разделе поведения файла конфигурации, я получаю:

Произошла ошибка при создании

<behaviorExtensions>
  <add name="myBehavior2"
    type="WcfService1.SimpleBehaviorExtensionElement`1[[WcfService1.MyBehavior,
      WcfService1]], WcfService1"/>
</behaviorExtensions>

WcfService1.MyBehavior существует, реализует IServiceBehavior и был протестирован.

Но когда я ссылаюсь на в разделе поведения файла конфигурации, я получаю:

Произошла ошибка при создании обработчик раздела конфигурации для system.serviceModel / поведения: Элемент расширения myBehavior2 не может быть добавленным к этому элементу. Подтвердите это расширение зарегистрировано в коллекция расширений на system.serviceModel / extensions / behaviorExtensions. Имя параметра: element

Все работает, если я создаю неуниверсальный потомок BehaviorExtensionElement, что я могу сделать. Но теперь это меня беспокоит. ;)

6
задан TrueWill 20 January 2011 в 22:48
поделиться