Castle.Facilities.WcfIntegration.Proxy.WcfProxyFactory.Create C# (CSharp) Method

Create() public method

public Create ( IKernel kernel, object instance, ComponentModel model, CreationContext context ) : object
kernel IKernel
instance object
model Castle.Core.ComponentModel
context CreationContext
return object
		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);
		}

Same methods

WcfProxyFactory::Create ( IProxyFactoryExtension customFactory, IKernel kernel, ComponentModel model, CreationContext context ) : object