ServiceBehavior
WCF サービスを装飾する属性として、この方法で実装されたカスタムがあります。
public sealed class NHibernateSessionServiceBehavior : Attribute, IServiceBehavior
{
public Type ServiceType { get; set; }
public IConfigurator Configurator { get; set; }
public NHibernateSessionServiceBehavior(Type serviceType, IConfigurator configurator)
{
ServiceType = serviceType;
Configurator = configurator;
}
#region Implementation of IServiceBehavior
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
NHibernateSessionHelper.Instance.InitializeSessionFactory(Configurator);
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcher channelDispatch in serviceHostBase.ChannelDispatchers)
{
foreach (EndpointDispatcher endpointDispatch in channelDispatch.Endpoints)
{
endpointDispatch.DispatchRuntime.MessageInspectors.Add(new NHibernateMessageInspector(ServiceType));
}
}
}
#endregion
}
私が抱えている問題は、属性コンストラクターに のインスタンスを渡す必要があることですIConfigurator
が、コンパイラーは明らかにそれをさせてくれません。IConfigurator
インスタンスを注入する Service にこの動作を追加する方法が必要です。これを行う方法について何か考えはありますか?