IInstanceProvider ( http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iinstanceprovider.aspxを参照) を実装し、WCF ランタイムにサービス動作を介してそれを使用するように指示できます。
サービスの動作は、カスタム ホスト、構成、または属性を使用して構成できます。後者の例を次に示します。
public class DependencyInjectionServiceBehaviorAttribute : Attribute, IServiceBehavior
{
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (var cdb in serviceHostBase.ChannelDispatchers)
{
var cd = cdb as ChannelDispatcher;
if (cd != null)
{
foreach (EndpointDispatcher ed in cd.Endpoints)
{
ed.DispatchRuntime.InstanceProvider = new MyServiceFactory(serviceDescription.ServiceType);
}
}
}
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase,
Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters) {}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) {}
}