Best JustMockLite code snippet using Telerik.JustMock.Core.Castle.DynamicProxy.DefaultProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface
ProxyGenerator.cs
Source:ProxyGenerator.cs  
...575			}576#endif577			CheckNotGenericTypeDefinition(interfaceToProxy, "interfaceToProxy");578			CheckNotGenericTypeDefinitions(additionalInterfacesToProxy, "additionalInterfacesToProxy");579			var generatedType = CreateInterfaceProxyTypeWithTargetInterface(interfaceToProxy, additionalInterfacesToProxy,580			                                                                options);581			var arguments = GetConstructorArguments(target, interceptors, options);582			if (isRemotingProxy)583			{584				var constructors = generatedType.GetConstructors();585				// one .ctor to rule them all586				Debug.Assert(constructors.Length == 1, "constructors.Length == 1");587				return constructors[0].Invoke(arguments.ToArray());588			}589			return Activator.CreateInstance(generatedType, arguments.ToArray());590		}591		/// <summary>592		///   Creates proxy object intercepting calls to members of interface <typeparamref name = "TInterface" /> on target object generated at runtime with given <paramref593		///    name = "interceptor" />.594		/// </summary>595		/// <typeparam name = "TInterface">Type of the interface which will be proxied.</typeparam>596		/// <param name = "interceptor">The interceptors called during the invocation of proxied methods.</param>597		/// <returns>598		///   Object proxying calls to members of <typeparamref name = "TInterface" /> types on generated target object.599		/// </returns>600		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptor" /> array is a null reference (Nothing in Visual Basic).</exception>601		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TInterface" /> is not an interface type.</exception>602		/// <remarks>603		///   Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see604		///    cref = "IInterceptor" /> implementations.605		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see606		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.607		///   As a result of that also at least one <see cref = "IInterceptor" /> implementation must be provided.608		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.609		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.610		/// </remarks>611		public TInterface CreateInterfaceProxyWithoutTarget<TInterface>(IInterceptor interceptor)612			where TInterface : class613		{614			return (TInterface)CreateInterfaceProxyWithoutTarget(typeof(TInterface), interceptor);615		}616		/// <summary>617		///   Creates proxy object intercepting calls to members of interface <typeparamref name = "TInterface" /> on target object generated at runtime with given <paramref618		///    name = "interceptors" />.619		/// </summary>620		/// <typeparam name = "TInterface">Type of the interface which will be proxied.</typeparam>621		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>622		/// <returns>623		///   Object proxying calls to members of <typeparamref name = "TInterface" /> types on generated target object.624		/// </returns>625		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>626		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TInterface" /> is not an interface type.</exception>627		/// <remarks>628		///   Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see629		///    cref = "IInterceptor" /> implementations.630		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see631		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.632		///   As a result of that also at least one <see cref = "IInterceptor" /> implementation must be provided.633		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.634		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.635		/// </remarks>636		public TInterface CreateInterfaceProxyWithoutTarget<TInterface>(params IInterceptor[] interceptors)637			where TInterface : class638		{639			return (TInterface)CreateInterfaceProxyWithoutTarget(typeof(TInterface), interceptors);640		}641		/// <summary>642		///   Creates proxy object intercepting calls to members of interface <typeparamref name = "TInterface" /> on target object generated at runtime with given <paramref643		///    name = "interceptors" />.644		/// </summary>645		/// <typeparam name = "TInterface">Type of the interface which will be proxied.</typeparam>646		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>647		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>648		/// <returns>649		///   Object proxying calls to members of <typeparamref name = "TInterface" /> types on generated target object.650		/// </returns>651		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>652		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TInterface" /> is not an interface type.</exception>653		/// <remarks>654		///   Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see655		///    cref = "IInterceptor" /> implementations.656		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see657		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.658		///   As a result of that also at least one <see cref = "IInterceptor" /> implementation must be provided.659		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.660		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.661		/// </remarks>662		public TInterface CreateInterfaceProxyWithoutTarget<TInterface>(ProxyGenerationOptions options,663		                                                                params IInterceptor[] interceptors)664			where TInterface : class665		{666			return (TInterface)CreateInterfaceProxyWithoutTarget(typeof(TInterface), Type.EmptyTypes, options, interceptors);667		}668		/// <summary>669		///   Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on target object generated at runtime with given <paramref670		///    name = "interceptor" />.671		/// </summary>672		/// <param name = "interfaceToProxy">Type of the interface which will be proxied.</param>673		/// <param name = "interceptor">The interceptors called during the invocation of proxied methods.</param>674		/// <returns>675		///   Object proxying calls to members of <paramref name = "interfaceToProxy" /> type on generated target object.676		/// </returns>677		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>678		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptor" /> array is a null reference (Nothing in Visual Basic).</exception>679		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is a generic type definition.</exception>680		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>681		/// <remarks>682		///   Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see683		///    cref = "IInterceptor" /> implementations.684		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see685		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.686		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.687		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.688		/// </remarks>689		public object CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, IInterceptor interceptor)690		{691			return CreateInterfaceProxyWithoutTarget(interfaceToProxy, Type.EmptyTypes, ProxyGenerationOptions.Default,692			                                         interceptor);693		}694		/// <summary>695		///   Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on target object generated at runtime with given <paramref696		///    name = "interceptors" />.697		/// </summary>698		/// <param name = "interfaceToProxy">Type of the interface which will be proxied.</param>699		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>700		/// <returns>701		///   Object proxying calls to members of <paramref name = "interfaceToProxy" /> type on generated target object.702		/// </returns>703		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>704		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>705		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is a generic type definition.</exception>706		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>707		/// <remarks>708		///   Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see709		///    cref = "IInterceptor" /> implementations.710		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see711		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.712		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.713		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.714		/// </remarks>715		public object CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, params IInterceptor[] interceptors)716		{717			return CreateInterfaceProxyWithoutTarget(interfaceToProxy, Type.EmptyTypes, ProxyGenerationOptions.Default,718			                                         interceptors);719		}720		/// <summary>721		///   Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on target object generated at runtime with given <paramref722		///    name = "interceptors" />.723		/// </summary>724		/// <param name = "interfaceToProxy">Type of the interface which will be proxied.</param>725		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>726		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>727		/// <returns>728		///   Object proxying calls to members of <paramref name = "interfaceToProxy" /> and <paramref729		///    name = "additionalInterfacesToProxy" /> types on generated target object.730		/// </returns>731		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>732		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>733		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> or any of <paramref734		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>735		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>736		/// <remarks>737		///   Since this method uses an empty-shell implementation of interfaces to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see738		///    cref = "IInterceptor" /> implementations.739		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see740		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.741		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.742		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.743		/// </remarks>744		public object CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy,745		                                                params IInterceptor[] interceptors)746		{747			return CreateInterfaceProxyWithoutTarget(interfaceToProxy, additionalInterfacesToProxy,748			                                         ProxyGenerationOptions.Default, interceptors);749		}750		/// <summary>751		///   Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on target object generated at runtime with given <paramref752		///    name = "interceptors" />.753		/// </summary>754		/// <param name = "interfaceToProxy">Type of the interface which will be proxied.</param>755		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>756		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>757		/// <returns>758		///   Object proxying calls to members of <paramref name = "interfaceToProxy" /> on generated target object.759		/// </returns>760		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>761		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>762		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" />  is a generic type definition.</exception>763		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>764		/// <remarks>765		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see766		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.767		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.768		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.769		/// </remarks>770		public object CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, ProxyGenerationOptions options,771		                                                params IInterceptor[] interceptors)772		{773			return CreateInterfaceProxyWithoutTarget(interfaceToProxy, Type.EmptyTypes, options, interceptors);774		}775		/// <summary>776		///   Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on target object generated at runtime with given <paramref777		///    name = "interceptors" />.778		/// </summary>779		/// <param name = "interfaceToProxy">Type of the interface which will be proxied.</param>780		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>781		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>782		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>783		/// <returns>784		///   Object proxying calls to members of <paramref name = "interfaceToProxy" /> and <paramref785		///    name = "additionalInterfacesToProxy" /> types on generated target object.786		/// </returns>787		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>788		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>789		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> or any of <paramref790		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>791		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>792		/// <remarks>793		///   Since this method uses an empty-shell implementation of <paramref name = "additionalInterfacesToProxy" /> to proxy generated at runtime, the actual implementation of proxied methods must be provided by given <see794		///    cref = "IInterceptor" /> implementations.795		///   They are responsible for setting return value (and out parameters) on proxied methods. It is also illegal for an interceptor to call <see796		///    cref = "IInvocation.Proceed" />, since there's no actual implementation to proceed with.797		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.798		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.799		/// </remarks>800		public virtual object CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy,801		                                                        ProxyGenerationOptions options,802		                                                        params IInterceptor[] interceptors)803		{804			if (interfaceToProxy == null)805			{806				throw new ArgumentNullException("interfaceToProxy");807			}808			if (interceptors == null)809			{810				throw new ArgumentNullException("interceptors");811			}812			if (!interfaceToProxy.GetTypeInfo().IsInterface)813			{814				throw new ArgumentException("Specified type is not an interface", "interfaceToProxy");815			}816			CheckNotGenericTypeDefinition(interfaceToProxy, "interfaceToProxy");817			CheckNotGenericTypeDefinitions(additionalInterfacesToProxy, "additionalInterfacesToProxy");818			var generatedType = CreateInterfaceProxyTypeWithoutTarget(interfaceToProxy, additionalInterfacesToProxy, options);819			var arguments = GetConstructorArguments(null, interceptors, options);820			return Activator.CreateInstance(generatedType, arguments.ToArray());821		}822		/// <summary>823		///   Creates proxy object intercepting calls to virtual members of type <typeparamref name = "TClass" /> on newly created instance of that type with given <paramref824		///    name = "interceptors" />.825		/// </summary>826		/// <typeparam name = "TClass">Type of class which will be proxied.</typeparam>827		/// <param name = "target">The target object, calls to which will be intercepted.</param>828		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>829		/// <returns>830		///   New object of type <typeparamref name = "TClass" /> proxying calls to virtual members of <typeparamref831		///    name = "TClass" /> type.832		/// </returns>833		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TClass" /> is not a class type.</exception>834		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <typeparamref name = "TClass" />.</exception>835		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <typeparamref name = "TClass" /> throws an exception.</exception>836		/// <remarks>837		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.838		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.839		/// </remarks>840		public TClass CreateClassProxyWithTarget<TClass>(TClass target, params IInterceptor[] interceptors)841			where TClass : class842		{843			return (TClass)CreateClassProxyWithTarget(typeof(TClass),844			                                          Type.EmptyTypes,845			                                          target,846			                                          ProxyGenerationOptions.Default,847			                                          new object[0],848			                                          interceptors);849		}850		/// <summary>851		///   Creates proxy object intercepting calls to virtual members of type <typeparamref name = "TClass" /> on newly created instance of that type with given <paramref852		///    name = "interceptors" />.853		/// </summary>854		/// <typeparam name = "TClass">Type of class which will be proxied.</typeparam>855		/// <param name = "target">The target object, calls to which will be intercepted.</param>856		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>857		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>858		/// <returns>859		///   New object of type <typeparamref name = "TClass" /> proxying calls to virtual members of <typeparamref860		///    name = "TClass" /> type.861		/// </returns>862		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TClass" /> is not a class type.</exception>863		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <typeparamref name = "TClass" />.</exception>864		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <typeparamref name = "TClass" /> throws an exception.</exception>865		/// <remarks>866		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.867		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.868		/// </remarks>869		public TClass CreateClassProxyWithTarget<TClass>(TClass target, ProxyGenerationOptions options,870		                                                 params IInterceptor[] interceptors) where TClass : class871		{872			return (TClass)CreateClassProxyWithTarget(typeof(TClass),873			                                          Type.EmptyTypes,874			                                          target,875			                                          options,876			                                          new object[0],877			                                          interceptors);878		}879		/// <summary>880		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref881		///    name = "interceptors" />.882		/// </summary>883		/// <param name = "classToProxy">Type of class which will be proxied.</param>884		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>885		/// <param name = "target">The target object, calls to which will be intercepted.</param>886		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>887		/// <returns>888		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref889		///    name = "classToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types.890		/// </returns>891		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>892		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> or any of <paramref893		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>894		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>895		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <paramref name = "classToProxy" />.</exception>896		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>897		/// <remarks>898		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.899		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.900		/// </remarks>901		public object CreateClassProxyWithTarget(Type classToProxy, Type[] additionalInterfacesToProxy, object target,902		                                         params IInterceptor[] interceptors)903		{904			return CreateClassProxyWithTarget(classToProxy,905			                                  additionalInterfacesToProxy,906			                                  target,907			                                  ProxyGenerationOptions.Default,908			                                  new object[0],909			                                  interceptors);910		}911		/// <summary>912		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref913		///    name = "interceptors" />.914		/// </summary>915		/// <param name = "classToProxy">Type of class which will be proxied.</param>916		/// <param name = "target">The target object, calls to which will be intercepted.</param>917		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>918		/// <param name = "constructorArguments">Arguments of constructor of type <paramref name = "classToProxy" /> which should be used to create a new instance of that type.</param>919		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>920		/// <returns>921		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref922		///    name = "classToProxy" /> type.923		/// </returns>924		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>925		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>926		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>927		/// <exception cref = "ArgumentException">Thrown when no constructor exists on type <paramref name = "classToProxy" /> with parameters matching <paramref928		///    name = "constructorArguments" />.</exception>929		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>930		/// <remarks>931		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.932		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.933		/// </remarks>934		public object CreateClassProxyWithTarget(Type classToProxy, object target, ProxyGenerationOptions options,935		                                         object[] constructorArguments, params IInterceptor[] interceptors)936		{937			return CreateClassProxyWithTarget(classToProxy,938			                                  Type.EmptyTypes,939			                                  target,940			                                  options,941			                                  constructorArguments,942			                                  interceptors);943		}944		/// <summary>945		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref946		///    name = "interceptors" />.947		/// </summary>948		/// <param name = "classToProxy">Type of class which will be proxied.</param>949		/// <param name = "target">The target object, calls to which will be intercepted.</param>950		/// <param name = "constructorArguments">Arguments of constructor of type <paramref name = "classToProxy" /> which should be used to create a new instance of that type.</param>951		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>952		/// <returns>953		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref954		///    name = "classToProxy" /> type.955		/// </returns>956		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>957		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>958		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>959		/// <exception cref = "ArgumentException">Thrown when no constructor exists on type <paramref name = "classToProxy" /> with parameters matching <paramref960		///    name = "constructorArguments" />.</exception>961		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>962		/// <remarks>963		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.964		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.965		/// </remarks>966		public object CreateClassProxyWithTarget(Type classToProxy, object target, object[] constructorArguments,967		                                         params IInterceptor[] interceptors)968		{969			return CreateClassProxyWithTarget(classToProxy,970			                                  Type.EmptyTypes,971			                                  target,972			                                  ProxyGenerationOptions.Default,973			                                  constructorArguments,974			                                  interceptors);975		}976		/// <summary>977		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref978		///    name = "interceptors" />.979		/// </summary>980		/// <param name = "classToProxy">Type of class which will be proxied.</param>981		/// <param name = "target">The target object, calls to which will be intercepted.</param>982		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>983		/// <returns>984		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref985		///    name = "classToProxy" /> type.986		/// </returns>987		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>988		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>989		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>990		/// <exception cref = "ArgumentException">Thrown when no parameterless constructor exists on type <paramref991		///    name = "classToProxy" />.</exception>992		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>993		/// <remarks>994		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.995		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.996		/// </remarks>997		public object CreateClassProxyWithTarget(Type classToProxy, object target, params IInterceptor[] interceptors)998		{999			return CreateClassProxyWithTarget(classToProxy,1000			                                  Type.EmptyTypes,1001			                                  target,1002			                                  ProxyGenerationOptions.Default,1003			                                  new object[0],1004			                                  interceptors);1005		}1006		/// <summary>1007		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1008		///    name = "interceptors" />.1009		/// </summary>1010		/// <param name = "classToProxy">Type of class which will be proxied.</param>1011		/// <param name = "target">The target object, calls to which will be intercepted.</param>1012		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1013		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1014		/// <returns>1015		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1016		///    name = "classToProxy" /> type.1017		/// </returns>1018		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1019		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "options" /> object is a null reference (Nothing in Visual Basic).</exception>1020		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>1021		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1022		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <paramref name = "classToProxy" />.</exception>1023		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1024		/// <remarks>1025		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1026		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1027		/// </remarks>1028		public object CreateClassProxyWithTarget(Type classToProxy, object target, ProxyGenerationOptions options,1029		                                         params IInterceptor[] interceptors)1030		{1031			return CreateClassProxyWithTarget(classToProxy,1032			                                  Type.EmptyTypes,1033			                                  target,1034			                                  options,1035			                                  new object[0],1036			                                  interceptors);1037		}1038		/// <summary>1039		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1040		///    name = "interceptors" />.1041		/// </summary>1042		/// <param name = "classToProxy">Type of class which will be proxied.</param>1043		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>1044		/// <param name = "target">The target object, calls to which will be intercepted.</param>1045		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1046		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1047		/// <returns>1048		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1049		///    name = "classToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types.1050		/// </returns>1051		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1052		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "options" /> object is a null reference (Nothing in Visual Basic).</exception>1053		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> or any of <paramref1054		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>1055		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1056		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <paramref name = "classToProxy" />.</exception>1057		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1058		/// <remarks>1059		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1060		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1061		/// </remarks>1062		public object CreateClassProxyWithTarget(Type classToProxy, Type[] additionalInterfacesToProxy, object target,1063		                                         ProxyGenerationOptions options, params IInterceptor[] interceptors)1064		{1065			return CreateClassProxyWithTarget(classToProxy,1066			                                  additionalInterfacesToProxy,1067			                                  target,1068			                                  options,1069			                                  new object[0],1070			                                  interceptors);1071		}1072		/// <summary>1073		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1074		///    name = "interceptors" />.1075		/// </summary>1076		/// <param name = "classToProxy">Type of class which will be proxied.</param>1077		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>1078		/// <param name = "target">The target object, calls to which will be intercepted.</param>1079		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1080		/// <param name = "constructorArguments">Arguments of constructor of type <paramref name = "classToProxy" /> which should be used to create a new instance of that type.</param>1081		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1082		/// <returns>1083		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1084		///    name = "classToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types.1085		/// </returns>1086		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1087		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "options" /> object is a null reference (Nothing in Visual Basic).</exception>1088		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> or any of <paramref1089		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>1090		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1091		/// <exception cref = "ArgumentException">Thrown when no constructor exists on type <paramref name = "classToProxy" /> with parameters matching <paramref1092		///    name = "constructorArguments" />.</exception>1093		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1094		/// <remarks>1095		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1096		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1097		/// </remarks>1098		public virtual object CreateClassProxyWithTarget(Type classToProxy, Type[] additionalInterfacesToProxy, object target,1099		                                                 ProxyGenerationOptions options, object[] constructorArguments,1100		                                                 params IInterceptor[] interceptors)1101		{1102			if (classToProxy == null)1103			{1104				throw new ArgumentNullException("classToProxy");1105			}1106			if (options == null)1107			{1108				throw new ArgumentNullException("options");1109			}1110			if (!classToProxy.GetTypeInfo().IsClass)1111			{1112				throw new ArgumentException("'classToProxy' must be a class", "classToProxy");1113			}1114			CheckNotGenericTypeDefinition(classToProxy, "classToProxy");1115			CheckNotGenericTypeDefinitions(additionalInterfacesToProxy, "additionalInterfacesToProxy");1116			var proxyType = CreateClassProxyTypeWithTarget(classToProxy, additionalInterfacesToProxy, options);1117			// create constructor arguments (initialized with mixin implementations, interceptors and target type constructor arguments)1118			var arguments = BuildArgumentListForClassProxyWithTarget(target, options, interceptors);1119			if (constructorArguments != null && constructorArguments.Length != 0)1120			{1121				arguments.AddRange(constructorArguments);1122			}1123			return CreateClassProxyInstance(proxyType, arguments, classToProxy, constructorArguments);1124		}1125		/// <summary>1126		///   Creates proxy object intercepting calls to virtual members of type <typeparamref name = "TClass" /> on newly created instance of that type with given <paramref1127		///    name = "interceptors" />.1128		/// </summary>1129		/// <typeparam name = "TClass">Type of class which will be proxied.</typeparam>1130		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1131		/// <returns>1132		///   New object of type <typeparamref name = "TClass" /> proxying calls to virtual members of <typeparamref1133		///    name = "TClass" /> type.1134		/// </returns>1135		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TClass" /> is not a class type.</exception>1136		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <typeparamref name = "TClass" />.</exception>1137		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <typeparamref name = "TClass" /> throws an exception.</exception>1138		/// <remarks>1139		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1140		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1141		/// </remarks>1142		public TClass CreateClassProxy<TClass>(params IInterceptor[] interceptors) where TClass : class1143		{1144			return (TClass)CreateClassProxy(typeof(TClass), ProxyGenerationOptions.Default, interceptors);1145		}1146		/// <summary>1147		///   Creates proxy object intercepting calls to virtual members of type <typeparamref name = "TClass" /> on newly created instance of that type with given <paramref1148		///    name = "interceptors" />.1149		/// </summary>1150		/// <typeparam name = "TClass">Type of class which will be proxied.</typeparam>1151		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1152		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1153		/// <returns>1154		///   New object of type <typeparamref name = "TClass" /> proxying calls to virtual members of <typeparamref1155		///    name = "TClass" /> type.1156		/// </returns>1157		/// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TClass" /> is not a class type.</exception>1158		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <typeparamref name = "TClass" />.</exception>1159		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <typeparamref name = "TClass" /> throws an exception.</exception>1160		/// <remarks>1161		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1162		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1163		/// </remarks>1164		public TClass CreateClassProxy<TClass>(ProxyGenerationOptions options, params IInterceptor[] interceptors)1165			where TClass : class1166		{1167			return (TClass)CreateClassProxy(typeof(TClass), options, interceptors);1168		}1169		/// <summary>1170		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1171		///    name = "interceptors" />.1172		/// </summary>1173		/// <param name = "classToProxy">Type of class which will be proxied.</param>1174		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>1175		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1176		/// <returns>1177		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1178		///    name = "classToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types.1179		/// </returns>1180		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1181		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> or any of <paramref1182		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>1183		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1184		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <paramref name = "classToProxy" />.</exception>1185		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1186		/// <remarks>1187		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1188		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1189		/// </remarks>1190		public object CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy,1191		                               params IInterceptor[] interceptors)1192		{1193			return CreateClassProxy(classToProxy, additionalInterfacesToProxy, ProxyGenerationOptions.Default, interceptors);1194		}1195		/// <summary>1196		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1197		///    name = "interceptors" />.1198		/// </summary>1199		/// <param name = "classToProxy">Type of class which will be proxied.</param>1200		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1201		/// <param name = "constructorArguments">Arguments of constructor of type <paramref name = "classToProxy" /> which should be used to create a new instance of that type.</param>1202		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1203		/// <returns>1204		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1205		///    name = "classToProxy" /> type.1206		/// </returns>1207		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1208		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>1209		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1210		/// <exception cref = "ArgumentException">Thrown when no constructor exists on type <paramref name = "classToProxy" /> with parameters matching <paramref1211		///    name = "constructorArguments" />.</exception>1212		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1213		/// <remarks>1214		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1215		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1216		/// </remarks>1217		public object CreateClassProxy(Type classToProxy, ProxyGenerationOptions options, object[] constructorArguments,1218		                               params IInterceptor[] interceptors)1219		{1220			return CreateClassProxy(classToProxy, null, options, constructorArguments, interceptors);1221		}1222		/// <summary>1223		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1224		///    name = "interceptors" />.1225		/// </summary>1226		/// <param name = "classToProxy">Type of class which will be proxied.</param>1227		/// <param name = "constructorArguments">Arguments of constructor of type <paramref name = "classToProxy" /> which should be used to create a new instance of that type.</param>1228		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1229		/// <returns>1230		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1231		///    name = "classToProxy" /> type.1232		/// </returns>1233		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1234		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>1235		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1236		/// <exception cref = "ArgumentException">Thrown when no constructor exists on type <paramref name = "classToProxy" /> with parameters matching <paramref1237		///    name = "constructorArguments" />.</exception>1238		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1239		/// <remarks>1240		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1241		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1242		/// </remarks>1243		public object CreateClassProxy(Type classToProxy, object[] constructorArguments, params IInterceptor[] interceptors)1244		{1245			return CreateClassProxy(classToProxy, null, ProxyGenerationOptions.Default, constructorArguments, interceptors);1246		}1247		/// <summary>1248		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1249		///    name = "interceptors" />.1250		/// </summary>1251		/// <param name = "classToProxy">Type of class which will be proxied.</param>1252		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1253		/// <returns>1254		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1255		///    name = "classToProxy" /> type.1256		/// </returns>1257		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1258		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>1259		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1260		/// <exception cref = "ArgumentException">Thrown when no parameterless constructor exists on type <paramref1261		///    name = "classToProxy" />.</exception>1262		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1263		/// <remarks>1264		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1265		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1266		/// </remarks>1267		public object CreateClassProxy(Type classToProxy, params IInterceptor[] interceptors)1268		{1269			return CreateClassProxy(classToProxy, null, ProxyGenerationOptions.Default,1270			                        null, interceptors);1271		}1272		/// <summary>1273		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1274		///    name = "interceptors" />.1275		/// </summary>1276		/// <param name = "classToProxy">Type of class which will be proxied.</param>1277		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1278		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1279		/// <returns>1280		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1281		///    name = "classToProxy" /> type.1282		/// </returns>1283		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1284		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "options" /> object is a null reference (Nothing in Visual Basic).</exception>1285		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is a generic type definition.</exception>1286		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1287		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <paramref name = "classToProxy" />.</exception>1288		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1289		/// <remarks>1290		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1291		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1292		/// </remarks>1293		public object CreateClassProxy(Type classToProxy, ProxyGenerationOptions options, params IInterceptor[] interceptors)1294		{1295			return CreateClassProxy(classToProxy, null, options, interceptors);1296		}1297		/// <summary>1298		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1299		///    name = "interceptors" />.1300		/// </summary>1301		/// <param name = "classToProxy">Type of class which will be proxied.</param>1302		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>1303		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1304		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1305		/// <returns>1306		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1307		///    name = "classToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types.1308		/// </returns>1309		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1310		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "options" /> object is a null reference (Nothing in Visual Basic).</exception>1311		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> or any of <paramref1312		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>1313		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1314		/// <exception cref = "ArgumentException">Thrown when no default constructor exists on type <paramref name = "classToProxy" />.</exception>1315		/// <exception cref = "TargetInvocationException">Thrown when default constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1316		/// <remarks>1317		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1318		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1319		/// </remarks>1320		public object CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options,1321		                               params IInterceptor[] interceptors)1322		{1323			return CreateClassProxy(classToProxy, additionalInterfacesToProxy, options, null, interceptors);1324		}1325		/// <summary>1326		///   Creates proxy object intercepting calls to virtual members of type <paramref name = "classToProxy" /> on newly created instance of that type with given <paramref1327		///    name = "interceptors" />.1328		/// </summary>1329		/// <param name = "classToProxy">Type of class which will be proxied.</param>1330		/// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>1331		/// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>1332		/// <param name = "constructorArguments">Arguments of constructor of type <paramref name = "classToProxy" /> which should be used to create a new instance of that type.</param>1333		/// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>1334		/// <returns>1335		///   New object of type <paramref name = "classToProxy" /> proxying calls to virtual members of <paramref1336		///    name = "classToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types.1337		/// </returns>1338		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "classToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>1339		/// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "options" /> object is a null reference (Nothing in Visual Basic).</exception>1340		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> or any of <paramref1341		///    name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>1342		/// <exception cref = "ArgumentException">Thrown when given <paramref name = "classToProxy" /> is not a class type.</exception>1343		/// <exception cref = "ArgumentException">Thrown when no constructor exists on type <paramref name = "classToProxy" /> with parameters matching <paramref1344		///    name = "constructorArguments" />.</exception>1345		/// <exception cref = "TargetInvocationException">Thrown when constructor of type <paramref name = "classToProxy" /> throws an exception.</exception>1346		/// <remarks>1347		///   This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.1348		///   As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.1349		/// </remarks>1350		public virtual object CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy,1351		                                       ProxyGenerationOptions options,1352		                                       object[] constructorArguments, params IInterceptor[] interceptors)1353		{1354			if (classToProxy == null)1355			{1356				throw new ArgumentNullException("classToProxy");1357			}1358			if (options == null)1359			{1360				throw new ArgumentNullException("options");1361			}1362			if (!classToProxy.GetTypeInfo().IsClass)1363			{1364				throw new ArgumentException("'classToProxy' must be a class", "classToProxy");1365			}1366			CheckNotGenericTypeDefinition(classToProxy, "classToProxy");1367			CheckNotGenericTypeDefinitions(additionalInterfacesToProxy, "additionalInterfacesToProxy");1368			var proxyType = CreateClassProxyType(classToProxy, additionalInterfacesToProxy, options);1369			// create constructor arguments (initialized with mixin implementations, interceptors and target type constructor arguments)1370			var arguments = BuildArgumentListForClassProxy(options, interceptors);1371			if (constructorArguments != null && constructorArguments.Length != 0)1372			{1373				arguments.AddRange(constructorArguments);1374			}1375			return CreateClassProxyInstance(proxyType, arguments, classToProxy, constructorArguments);1376		}1377		protected object CreateClassProxyInstance(Type proxyType, List<object> proxyArguments, Type classToProxy,1378		                                          object[] constructorArguments)1379		{1380			try1381			{1382                return proxyType.CreateObject(proxyArguments.ToArray());1383            }1384			catch (MissingMethodException)1385			{1386				var message = new StringBuilder();1387				message.AppendFormat("Can not instantiate proxy of class: {0}.", classToProxy.FullName);1388				message.AppendLine();1389				if (constructorArguments == null || constructorArguments.Length == 0)1390				{1391					message.Append("Could not find a parameterless constructor.");1392				}1393				else1394				{1395					message.AppendLine("Could not find a constructor that would match given arguments:");1396					foreach (var argument in constructorArguments)1397					{1398						var argumentText = argument == null ? "<null>" : argument.GetType().ToString();1399						message.AppendLine(argumentText);1400					}1401				}1402				throw new InvalidProxyConstructorArgumentsException(message.ToString(),proxyType,classToProxy);1403			}1404		}1405		protected void CheckNotGenericTypeDefinition(Type type, string argumentName)1406		{1407			if (type != null && type.GetTypeInfo().IsGenericTypeDefinition)1408			{1409				throw new GeneratorException(string.Format("Can not create proxy for type {0} because it is an open generic type.",1410														   type.GetBestName()));1411			}1412		}1413		protected void CheckNotGenericTypeDefinitions(IEnumerable<Type> types, string argumentName)1414		{1415			if (types == null)1416			{1417				return;1418			}1419			foreach (var t in types)1420			{1421				CheckNotGenericTypeDefinition(t, argumentName);1422			}1423		}1424		protected List<object> BuildArgumentListForClassProxyWithTarget(object target, ProxyGenerationOptions options,1425		                                                                IInterceptor[] interceptors)1426		{1427			var arguments = new List<object>();1428			arguments.Add(target);1429			arguments.AddRange(options.MixinData.Mixins);1430			arguments.Add(interceptors);1431			if (options.Selector != null)1432			{1433				arguments.Add(options.Selector);1434			}1435			return arguments;1436		}1437		protected List<object> BuildArgumentListForClassProxy(ProxyGenerationOptions options, IInterceptor[] interceptors)1438		{1439			var arguments = new List<object>(options.MixinData.Mixins) { interceptors };1440			if (options.Selector != null)1441			{1442				arguments.Add(options.Selector);1443			}1444			return arguments;1445		}1446		/// <summary>1447		///   Creates the proxy type for class proxy with given <paramref name = "classToProxy" /> class, implementing given <paramref1448		///    name = "additionalInterfacesToProxy" /> and using provided <paramref name = "options" />.1449		/// </summary>1450		/// <param name = "classToProxy">The base class for proxy type.</param>1451		/// <param name = "additionalInterfacesToProxy">The interfaces that proxy type should implement.</param>1452		/// <param name = "options">The options for proxy generation process.</param>1453		/// <returns><see cref = "Type" /> of proxy.</returns>1454		protected Type CreateClassProxyType(Type classToProxy, Type[] additionalInterfacesToProxy,1455		                                    ProxyGenerationOptions options)1456		{1457			// create proxy1458			return ProxyBuilder.CreateClassProxyType(classToProxy, additionalInterfacesToProxy, options);1459		}1460		/// <summary>1461		///   Creates the proxy type for interface proxy with target for given <paramref name = "interfaceToProxy" /> interface, implementing given <paramref1462		///    name = "additionalInterfacesToProxy" /> on given <paramref name = "targetType" /> and using provided <paramref1463		///    name = "options" />.1464		/// </summary>1465		/// <param name = "interfaceToProxy">The interface proxy type should implement.</param>1466		/// <param name = "additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>1467		/// <param name = "targetType">Actual type that the proxy type will encompass.</param>1468		/// <param name = "options">The options for proxy generation process.</param>1469		/// <returns><see cref = "Type" /> of proxy.</returns>1470		protected Type CreateInterfaceProxyTypeWithTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy,1471		                                                  Type targetType,1472		                                                  ProxyGenerationOptions options)1473		{1474			// create proxy1475			return ProxyBuilder.CreateInterfaceProxyTypeWithTarget(interfaceToProxy, additionalInterfacesToProxy, targetType,1476			                                                       options);1477		}1478		/// <summary>1479		///   Creates the proxy type for interface proxy with target interface for given <paramref name = "interfaceToProxy" /> interface, implementing given <paramref1480		///    name = "additionalInterfacesToProxy" /> on given <paramref name = "interfaceToProxy" /> and using provided <paramref1481		///    name = "options" />.1482		/// </summary>1483		/// <param name = "interfaceToProxy">The interface proxy type should implement.</param>1484		/// <param name = "additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>1485		/// <param name = "options">The options for proxy generation process.</param>1486		/// <returns><see cref = "Type" /> of proxy.</returns>1487		protected Type CreateInterfaceProxyTypeWithTargetInterface(Type interfaceToProxy, Type[] additionalInterfacesToProxy,1488		                                                           ProxyGenerationOptions options)1489		{1490			// create proxy1491			return ProxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(interfaceToProxy, additionalInterfacesToProxy,1492			                                                                options);1493		}1494		/// <summary>1495		///   Creates the proxy type for interface proxy without target for given <paramref name = "interfaceToProxy" /> interface, implementing given <paramref1496		///    name = "additionalInterfacesToProxy" /> and using provided <paramref name = "options" />.1497		/// </summary>1498		/// <param name = "interfaceToProxy">The interface proxy type should implement.</param>1499		/// <param name = "additionalInterfacesToProxy">The additional interfaces proxy type should implement.</param>1500		/// <param name = "options">The options for proxy generation process.</param>1501		/// <returns><see cref = "Type" /> of proxy.</returns>1502		protected Type CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy,1503		                                                     ProxyGenerationOptions options)1504		{1505			// create proxy...DefaultProxyBuilder.cs
Source:DefaultProxyBuilder.cs  
...75			AssertValidTypes(additionalInterfacesToProxy);76			var generator = new InterfaceProxyWithTargetGenerator(scope, interfaceToProxy) { Logger = logger };77			return generator.GenerateCode(targetType, additionalInterfacesToProxy, options);78		}79		public Type CreateInterfaceProxyTypeWithTargetInterface(Type interfaceToProxy, Type[] additionalInterfacesToProxy,80		                                                        ProxyGenerationOptions options)81		{82			AssertValidType(interfaceToProxy);83			AssertValidTypes(additionalInterfacesToProxy);84			var generator = new InterfaceProxyWithTargetInterfaceGenerator(scope, interfaceToProxy) { Logger = logger };85			return generator.GenerateCode(interfaceToProxy, additionalInterfacesToProxy, options);86		}87		public Type CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy,88		                                                  ProxyGenerationOptions options)89		{90			AssertValidType(interfaceToProxy);91			AssertValidTypes(additionalInterfacesToProxy);92			var generator = new InterfaceProxyWithoutTargetGenerator(scope, interfaceToProxy) { Logger = logger };93			return generator.GenerateCode(typeof(object), additionalInterfacesToProxy, options);...CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using Telerik.JustMock.Core.Castle.DynamicProxy;6{7    {8        static void Main(string[] args)9        {10            var proxyBuilder = new DefaultProxyBuilder();11            var proxyType = proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(typeof(IInterface), new Type[] { typeof(IInterface1) }, ProxyGenerationOptions.Default);12            Console.WriteLine(proxyType.Name);13            Console.ReadKey();14        }15    }16    {17        void Method1();18    }19    {20        void Method2();21    }22}CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using Telerik.JustMock.Core.Castle.DynamicProxy;3using Telerik.JustMock.Core.Castle.DynamicProxy.Generators;4using Telerik.JustMock.Core.Castle.DynamicProxy.Generators.Emitters;5using Telerik.JustMock.Core.Castle.DynamicProxy.Generators.Emitters.SimpleAST;6using Telerik.JustMock.Core.Castle.DynamicProxy.Internal;7using Telerik.JustMock.Core.Castle.DynamicProxy.Tokens;8{9    {10        public static void Main()11        {12            var proxyBuilder = new CustomProxyBuilder(new DefaultProxyBuilder());13            var proxyType = proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(typeof(IInterface), new Type[0], ProxyGenerationOptions.Default, null);14            var proxy = (IInterface)Activator.CreateInstance(proxyType);15            proxy.TestMethod();16        }17    }18    {19        void TestMethod();20    }21    {22        public CustomProxyBuilder(IProxyBuilder builder) : base(builder)23        {24        }25        public override Type CreateInterfaceProxyTypeWithTargetInterface(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, object target)26        {27            var moduleScope = new CustomModuleScope();28            var proxyGenerator = new CustomProxyGenerator(moduleScope, new DefaultProxyBuilder());29            var proxyType = proxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(interfaceToProxy, additionalInterfacesToProxy, options, target);30            return proxyType;31        }32    }33    {34        public CustomProxyGenerator(ModuleScope scope, IProxyBuilder builder) : base(scope, builder)35        {36        }37        protected override MetaType CreateClassProxyMetaType(Type type, Type[] interfaces, ProxyGenerationOptions options)38        {39            var metaType = new CustomMetaType(type, interfaces, options);40            return metaType;41        }42    }CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Telerik.JustMock.Core.Castle.DynamicProxy;7{8    {9        static void Main(string[] args)10        {11            var proxy = ProxyGenerator.CreateInterfaceProxyTypeWithTargetInterface(typeof(IProxy), typeof(Proxy));12            var instance = Activator.CreateInstance(proxy, new Proxy());13        }14    }15    {16        void Test();17    }18    {19        public void Test()20        {21            Console.WriteLine("Test");22        }23    }24}25using System;26using System.Collections.Generic;27using System.Linq;28using System.Text;29using System.Threading.Tasks;30using Telerik.JustMock.Core.Castle.DynamicProxy;31{32    {33        static void Main(string[] args)34        {35            var proxy = ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(typeof(IProxy));36            var instance = Activator.CreateInstance(proxy);37        }38    }39    {40        void Test();41    }42}43using System;44using System.Collections.Generic;45using System.Linq;46using System.Text;47using System.Threading.Tasks;48using Telerik.JustMock.Core.Castle.DynamicProxy;49{50    {51        static void Main(string[] args)52        {53            var proxy = ProxyGenerator.CreateClassProxyType(typeof(Proxy), null);54            var instance = Activator.CreateInstance(proxy);55        }56    }57    {58        public void Test()59        {60            Console.WriteLine("Test");61        }62    }63}64using System;65using System.Collections.Generic;66using System.Linq;67using System.Text;68using System.Threading.Tasks;69using Telerik.JustMock.Core.Castle.DynamicProxy;70{71    {72        static void Main(string[] args)73        {74            var proxy = ProxyGenerator.CreateClassProxyType(typeof(Proxy), new Type[] {CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using Telerik.JustMock.Core.Castle.DynamicProxy;2using System;3using System.Collections.Generic;4using System.Linq;5using System.Text;6using System.Threading.Tasks;7{8    {9        static void Main(string[] args)10        {11            var proxyType = new DefaultProxyBuilder().CreateInterfaceProxyTypeWithTargetInterface(typeof(IA), new Type[] { typeof(IB) }, ProxyGenerationOptions.Default);12            var proxy = (IB)Activator.CreateInstance(proxyType, new IAImpl());13            proxy.Foo();14            Console.ReadLine();15        }16    }17    {18        void Foo();19    }20    {21        void Foo();22    }23    {24        public void Foo()25        {26            Console.WriteLine("IAImpl.Foo()");27        }28    }29}30using Telerik.JustMock.Core.Castle.DynamicProxy;31using System;32using System.Collections.Generic;33using System.Linq;34using System.Text;35using System.Threading.Tasks;36{37    {38        static void Main(string[] args)39        {40            var proxyType = new DefaultProxyBuilder().CreateInterfaceProxyTypeWithoutTarget(typeof(IA), new Type[] { typeof(IB) }, ProxyGenerationOptions.Default);41            var proxy = (IB)Activator.CreateInstance(proxyType);42            proxy.Foo();43            Console.ReadLine();44        }45    }46    {47        void Foo();48    }49    {50        void Foo();51    }52}CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using Telerik.JustMock.Core.Castle.DynamicProxy;6using Telerik.JustMock.Core;7{8    {9        static void Main(string[] args)10        {11            DefaultProxyBuilder builder = new DefaultProxyBuilder();12            Type proxyType = builder.CreateInterfaceProxyTypeWithTargetInterface(typeof(IInterface), new Type[] { typeof(IInterface2) });13            Console.WriteLine(proxyType.Name);14            Console.Read();15        }16    }17    {18        void Test();19    }20    {21        void Test();22    }23}24Type proxyType = builder.CreateInterfaceProxyTypeWithTargetInterface(typeof(IInterface), new Type[] { typeof(IInterface2) });CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Telerik.JustMock.Core.Castle.DynamicProxy;7using Telerik.JustMock.Core.Castle.DynamicProxy.Generators;8{9    {10        static void Main(string[] args)11        {12            ProxyBuilder builder = new ProxyBuilder();13            Type proxyType = builder.CreateInterfaceProxyTypeWithTargetInterface(typeof(IInterface), typeof(InterfaceImplementation), new ProxyGenerationOptions(new InterfaceProxyWithTargetGenerator()));14            IInterface proxy = (IInterface)Activator.CreateInstance(proxyType);15            proxy.Method();16            Console.ReadLine();17        }18    }19    {20        void Method();21    }22    {23        public void Method()24        {25            Console.WriteLine("Method");26        }27    }28}29Error 1 The type or namespace name 'Telerik' does not exist in the namespace 'Telerik.JustMock.Core.Castle.DynamicProxy' (are you missing an assembly reference?) C:\Users\hossam\Desktop\JustMock\JustMock\JustMock\Program.cs 7 7 TestProject130Hi,Please, try to add the following using statement:using Telerik.JustMock.Core.Castle.DynamicProxy;Please, let us know if you have any additional questions.Regards,StefanTelerik31Error 1 The type or namespace name 'ProxyBuilder' could not be found (are you missing a using directive or an assembly reference?) C:\Users\hossam\Desktop\JustMock\JustMock\JustMock\Program.cs 16 26 TestProject132Hi,Please, try to add the following using statement:using Telerik.JustMock.Core.Castle.DynamicProxy;Please, let us know if you have any additionalCreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Telerik.JustMock.Core.Castle.DynamicProxy;7{8    {9        void Method1();10    }11    {12        public void Method1()13        {14            Console.WriteLine("Method1");15        }16    }17    {18        static void Main(string[] args)19        {20            TestClass testClass = new TestClass();21            var proxy = new DefaultProxyBuilder().CreateInterfaceProxyTypeWithTargetInterface(typeof(ITest), testClass.GetType(), new Type[] { });22            ITest test = (ITest)Activator.CreateInstance(proxy, testClass);23            test.Method1();24        }25    }26}27using System;28using System.Collections.Generic;29using System.Linq;30using System.Text;31using System.Threading.Tasks;32using Telerik.JustMock.Core.Castle.DynamicProxy;33{34    {35        void Method1();36    }37    {38        public void Method1()39        {40            Console.WriteLine("Method1");41        }42    }43    {44        static void Main(string[] args)45        {46            TestClass testClass = new TestClass();47            var proxy = new DefaultProxyBuilder().CreateInterfaceProxyTypeWithoutTarget(typeof(ITest), new Type[] { });48            ITest test = (ITest)Activator.CreateInstance(proxy);49            test.Method1();50        }51    }52}53using System;54using System.Collections.Generic;55using System.Linq;56using System.Text;57using System.Threading.Tasks;58using Telerik.JustMock.Core.Castle.DynamicProxy;59{60    {61        void Method1();62    }63    {64        public void Method1()65        {66            Console.WriteLine("Method1");67        }68    }69    {70        static void Main(string[] args)71        {72            TestClass testClass = new TestClass();CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using Telerik.JustMock.Core.Castle.DynamicProxy;2using System;3using System.Collections.Generic;4using System.Linq;5using System.Text;6using System.Threading.Tasks;7{8    {9        public void Test()10        {11            var proxyBuilder = new DefaultProxyBuilder();12            var proxy = proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(13                typeof(IInterface1), new Type[] { typeof(IInterface2) }, ProxyGenerationOptions.Default);14        }15    }16    {17        void Test();18    }19    {20        void Test();21    }22}23using Telerik.JustMock.Core.Castle.DynamicProxy;24using System;25using System.Collections.Generic;26using System.Linq;27using System.Text;28using System.Threading.Tasks;29{30    {31        public void Test()32        {33            var proxyBuilder = new DefaultProxyBuilder();34            var proxy = proxyBuilder.CreateInterfaceProxyTypeWithoutTarget(35                typeof(IInterface1), new Type[] { typeof(IInterface2) }, ProxyGenerationOptions.Default);36        }37    }38    {39        void Test();40    }41    {42        void Test();43    }44}45using Telerik.JustMock.Core.Castle.DynamicProxy;46using System;47using System.Collections.Generic;48using System.Linq;49using System.Text;50using System.Threading.Tasks;51{52    {53        public void Test()54        {55            var proxyBuilder = new DefaultProxyBuilder();56            var proxy = proxyBuilder.CreateInterfaceProxyTypeWithTarget(57                typeof(IInterface1), new Type[] { typeof(IInterface2) }, ProxyGenerationOptions.Default);58        }59    }60    {61        void Test();62    }63    {64        void Test();65    }66}CreateInterfaceProxyTypeWithTargetInterface
Using AI Code Generation
1using System;2using Telerik.JustMock.Core;3using Telerik.JustMock.Core.Castle.DynamicProxy;4using Telerik.JustMock.Core.Context;5{6    {7        public static void Main()8        {9            var proxyBuilder = new DefaultProxyBuilder();10            var proxyType = proxyBuilder.CreateInterfaceProxyTypeWithTargetInterface(typeof(IInterface1), new Type[0], ProxyGenerationOptions.Default);11            var proxy = (IInterface1)Activator.CreateInstance(proxyType, new object[0]);12            Mock.Arrange(() => proxy.Method1(0)).Returns(1);13            Console.WriteLine(proxy.Method1(0));14        }15    }16    {17        int Method1(int a);18    }19}20using System;21using Telerik.JustMock.Core;22using Telerik.JustMock.Core.Castle.DynamicProxy;23using Telerik.JustMock.Core.Context;24{25    {26        public static void Main()27        {28            var proxyBuilder = new DefaultProxyBuilder();29            var proxyType = proxyBuilder.CreateInterfaceProxyTypeWithoutTarget(typeof(IInterface1), new Type[0], ProxyGenerationOptions.Default);30            var proxy = (IInterface1)Activator.CreateInstance(proxyType, new object[0]);31            Mock.Arrange(() => proxy.Method1(0)).Returns(1);32            Console.WriteLine(proxy.Method1(0));33        }34    }35    {36        int Method1(int a);37    }38}39using System;40using Telerik.JustMock.Core;41using Telerik.JustMock.Core.Castle.DynamicProxy;42using Telerik.JustMock.Core.Context;43{44    {45        public static void Main()46        {47            var proxyBuilder = new DefaultProxyBuilder();48            var proxyType = proxyBuilder.CreateInterfaceProxyTypeWithTarget(typeof(IInterface1), new Type[0], ProxyGenerationOptionsLearn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
