我有一个这样实现的自定义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实例的服务中。你知道该怎么做吗?
发布于 2013-04-25 13:57:52
看看这篇文章:Using Instance Provider and ServiceHostFactory to Construct the Service。
本系列还可能对您有所帮助:
http://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity.aspx http://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity-part-ii.aspx
https://stackoverflow.com/questions/16200244
复制相似问题