Декларативно настроить расширение поведения WCF на программно созданной конечной точке

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

Я не хочу этого в Общем поведении (machine.config).

Я могу добавить поведение программно.

endpoint.Behaviors.Add(new MyCustomBehavior())

Но я предпочитаю делать это в конфиге, чтобы там же можно было настроить расширение.

Можно ли декларативно добавить и настроить расширение поведения конечной точки для программно созданной конечной точки, зная только тип или интерфейс, оставив клиентскую конечную точку для создания программным путем?

<system.serviceModel>
  <client>
    <!-- Created programmatically -->
  </client>
<extensions>
  <behaviorExtensions>
    <add name="MyCustomBehavior" type="namespace.CustomBehaviors", MyAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </behaviorExtensions>   
</extensions>
  <behaviors>
    <endpointBehaviors>
      <behavior name="MyCustomBehavior">
        <MyCustomBehavior MyImportantBehaviorParam1="foo"  />
      </behavior>
    </endpointBehaviors>   
  </behaviors>
</system.serviceModel>

Конечно, я мог бы поместить конфиг в другой раздел, и мое поведение прочитало бы его там, но я бы предпочел использовать средства WCF, если это возможно.

7
задан kaiz.net 20 April 2012 в 07:20
поделиться