1

ServiceBehaviorWCF サービスを装飾する属性として、この方法で実装されたカスタムがあります。

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 にこの動作を追加する方法が必要です。これを行う方法について何か考えはありますか?

4