带有自定义构造函数的ServiceBehavior.需要注入依赖项

本文关键字:注入 依赖 ServiceBehavior 自定义 构造函数 | 更新日期: 2023-09-27 18:10:41

我有一个这样实现的自定义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实例的服务。知道怎么做吗?

带有自定义构造函数的ServiceBehavior.需要注入依赖项

看看这篇文章:使用实例提供商和ServiceHostFactory来构建服务。

这个系列也可以提供帮助:

http://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity.aspxhttp://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity-part-ii.aspx