2009-12-11 2 views
0

В WCF некоторые настройки записываются как атрибуты класса. Я хотел бы установить их в файле конфигурации.Есть ли способ украсить класс атрибутами через файл конфигурации?

Примеры

[OperationContract(IsOneWay = true)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
    ConcurrencyMode = ConcurrencyMode.Multiple)] 

Есть ли способ сделать это? Может быть, с MicroKernel/Windsor?

ответ

1

Некоторые настройки действительно требуют атрибутов (вместо настройки). Теперь, хотя я не знаю обо всех таких встречах, по крайней мере для некоторых это имеет смысл. Например, InstanceContextMode и ConcurrencyMode требуют определенного стиля реализации. Другими словами, реализация должна быть записана таким образом, чтобы фактически поддерживать указанные режимы (думать о безгражданстве, жизненном цикле объекта реализации и т. Д.).

В качестве бокового узла: при использовании DI для создания классов реализации для WCF (с помощью специального экземпляра InstanceContextInitializer) вы должны даже убедиться, что вы не изменяете поведение, указанное в поведении службы. Например, политика Windsor по умолчанию для жизни по умолчанию - «Single», поэтому, что бы вы не указали в ServiceBehavior, вы бы эффективно использовали InstanceContextMode.Single - возможно, не то, что вам нравится. По крайней мере, это не легко обнаружить.

Смежные вопросы