public override object Create(IKernel kernel, object instance, ComponentModel model,
CreationContext context, params object[] constructorArguments)
{
var channelHolder = instance as IWcfChannelHolder;
if (channelHolder == null)
{
throw new ArgumentException(string.Format("Given instance is not an {0}", typeof(IWcfChannelHolder)), "instance");
}
var isDuplex = IsDuplex(channelHolder.RealProxy);
var proxyOptions = model.ObtainProxyOptions();
var serviceContract = model.GetServiceContract();
var remainingServices = model.Services.Except(new[] { serviceContract });
var generationOptions = CreateProxyGenerationOptions(serviceContract, proxyOptions, kernel, context);
generationOptions.AddMixinInstance(channelHolder);
var additionalInterfaces = GetInterfaces(remainingServices, proxyOptions, isDuplex);
var interceptors = GetInterceptors(kernel, model, serviceContract, channelHolder, context);
return generator.CreateInterfaceProxyWithTargetInterface(serviceContract,
additionalInterfaces, channelHolder.Channel, generationOptions, interceptors);
}