あなたがこれを行うことができます:
のweb.config WCFの設定:
<behaviors>
<serviceBehaviors>
<behavior name="defaultBehaviour">
<createWithIoC />
</behavior>
</serviceBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add
name="createWithIoC"
type="Namespace.CreateWithIocBehaviour, Assembly.Namespace" />
</behaviorExtensions>
</extensions>
public class CreateWithIocBehaviour : BehaviorExtensionElement
{
protected override object CreateBehavior()
{
return new IocServiceProviderBehaviour();
}
public override Type BehaviorType
{
get { return typeof(IocServiceProviderBehaviour); }
}
}
public class IocServiceProviderBehaviour : IServiceBehavior
{
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
{
var cd = cdb as ChannelDispatcher;
if (cd != null)
{
foreach (EndpointDispatcher ed in cd.Endpoints)
{
ed.DispatchRuntime.InstanceProvider =
new IocServiceProvider(serviceDescription.ServiceType);
}
}
}
}
}
public class IocServiceProvider : IInstanceProvider
{
private readonly Type _serviceType;
public IocServiceProvider(Type serviceType)
{
_serviceType = serviceType;
}
public object GetInstance(InstanceContext instanceContext)
{
return GetInstance(instanceContext, null);
}
public object GetInstance(InstanceContext instanceContext, Message message)
{
return IoC.Resolve<object>(_serviceType);
}
public void ReleaseInstance(InstanceContext instanceContext, object instance)
{
IoC.Release(instance);
}
}