Best JustMockLite code snippet using Telerik.JustMock.Core.Castle.DynamicProxy.ProxyGenerator.GetConstructorArguments
ProxyGenerator.cs
Source:ProxyGenerator.cs
...313 CheckNotGenericTypeDefinition(interfaceToProxy, "interfaceToProxy");314 CheckNotGenericTypeDefinitions(additionalInterfacesToProxy, "additionalInterfacesToProxy");315 var generatedType = CreateInterfaceProxyTypeWithTarget(interfaceToProxy, additionalInterfacesToProxy, targetType,316 options);317 var arguments = GetConstructorArguments(target, interceptors, options);318 return Activator.CreateInstance(generatedType, arguments.ToArray());319 }320 protected List<object> GetConstructorArguments(object target, IInterceptor[] interceptors,321 ProxyGenerationOptions options)322 {323 // create constructor arguments (initialized with mixin implementations, interceptors and target type constructor arguments)324 var arguments = new List<object>(options.MixinData.Mixins) { interceptors, target };325 if (options.Selector != null)326 {327 arguments.Add(options.Selector);328 }329 return arguments;330 }331 /// <summary>332 /// Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on <paramref333 /// name = "target" /> object with given <paramref name = "interceptors" />.334 /// Interceptors can use <see cref = "IChangeProxyTarget" /> interface to provide other target for method invocation than default <paramref335 /// name = "target" />.336 /// </summary>337 /// <param name = "interfaceToProxy">Type of the interface implemented by <paramref name = "target" /> which will be proxied.</param>338 /// <param name = "target">The target object, calls to which will be intercepted.</param>339 /// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>340 /// <returns>341 /// Object proxying calls to members of <paramref name = "interfaceToProxy" /> type on <paramref name = "target" /> object or alternative implementation swapped at runtime by an interceptor.342 /// </returns>343 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>344 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "target" /> object is a null reference (Nothing in Visual Basic).</exception>345 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>346 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is a generic type definition.</exception>347 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>348 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "target" /> does not implement <paramref349 /// name = "interfaceToProxy" /> interface.</exception>350 /// <exception cref = "MissingMethodException">Thrown when no default constructor exists on actual type of <paramref351 /// name = "target" /> object.</exception>352 /// <exception cref = "TargetInvocationException">Thrown when default constructor of actual type of <paramref353 /// name = "target" /> throws an exception.</exception>354 /// <remarks>355 /// This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.356 /// As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.357 /// </remarks>358 public object CreateInterfaceProxyWithTargetInterface(Type interfaceToProxy, object target,359 params IInterceptor[] interceptors)360 {361 return CreateInterfaceProxyWithTargetInterface(interfaceToProxy, target, ProxyGenerationOptions.Default, interceptors);362 }363 /// <summary>364 /// Creates proxy object intercepting calls to members of interface <typeparamref name = "TInterface" /> on <paramref365 /// name = "target" /> object with given <paramref name = "interceptors" />.366 /// Interceptors can use <see cref = "IChangeProxyTarget" /> interface to provide other target for method invocation than default <paramref367 /// name = "target" />.368 /// </summary>369 /// <typeparam name = "TInterface">Type of the interface implemented by <paramref name = "target" /> which will be proxied.</typeparam>370 /// <param name = "target">The target object, calls to which will be intercepted.</param>371 /// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>372 /// <returns>373 /// Object proxying calls to members of <typeparamref name = "TInterface" /> type on <paramref name = "target" /> object or alternative implementation swapped at runtime by an interceptor.374 /// </returns>375 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "target" /> object is a null reference (Nothing in Visual Basic).</exception>376 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>377 /// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TInterface" /> is not an interface type.</exception>378 /// <exception cref = "MissingMethodException">Thrown when no default constructor exists on actual type of <paramref379 /// name = "target" /> object.</exception>380 /// <exception cref = "TargetInvocationException">Thrown when default constructor of actual type of <paramref381 /// name = "target" /> throws an exception.</exception>382 /// <remarks>383 /// This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.384 /// As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.385 /// </remarks>386 public TInterface CreateInterfaceProxyWithTargetInterface<TInterface>(TInterface target,387 params IInterceptor[] interceptors)388 where TInterface : class389 {390 return (TInterface)CreateInterfaceProxyWithTargetInterface(typeof(TInterface),391 target,392 ProxyGenerationOptions.Default,393 interceptors);394 }395 /// <summary>396 /// Creates proxy object intercepting calls to members of interface <typeparamref name = "TInterface" /> on <paramref397 /// name = "target" /> object with given <paramref name = "interceptors" />.398 /// Interceptors can use <see cref = "IChangeProxyTarget" /> interface to provide other target for method invocation than default <paramref399 /// name = "target" />.400 /// </summary>401 /// <typeparam name = "TInterface">Type of the interface implemented by <paramref name = "target" /> which will be proxied.</typeparam>402 /// <param name = "target">The target object, calls to which will be intercepted.</param>403 /// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>404 /// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>405 /// <returns>406 /// Object proxying calls to members of <typeparamref name = "TInterface" /> type on <paramref name = "target" /> object or alternative implementation swapped at runtime by an interceptor.407 /// </returns>408 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "target" /> object is a null reference (Nothing in Visual Basic).</exception>409 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>410 /// <exception cref = "ArgumentException">Thrown when given <typeparamref name = "TInterface" /> is not an interface type.</exception>411 /// <exception cref = "MissingMethodException">Thrown when no default constructor exists on actual type of <paramref412 /// name = "target" /> object.</exception>413 /// <exception cref = "TargetInvocationException">Thrown when default constructor of actual type of <paramref414 /// name = "target" /> throws an exception.</exception>415 /// <remarks>416 /// This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.417 /// As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.418 /// </remarks>419 public TInterface CreateInterfaceProxyWithTargetInterface<TInterface>(TInterface target,420 ProxyGenerationOptions options,421 params IInterceptor[] interceptors)422 where TInterface : class423 {424 return (TInterface)CreateInterfaceProxyWithTargetInterface(typeof(TInterface),425 target,426 options,427 interceptors);428 }429 /// <summary>430 /// Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on <paramref431 /// name = "target" /> object with given <paramref name = "interceptors" />.432 /// Interceptors can use <see cref = "IChangeProxyTarget" /> interface to provide other target for method invocation than default <paramref433 /// name = "target" />.434 /// </summary>435 /// <param name = "interfaceToProxy">Type of the interface implemented by <paramref name = "target" /> which will be proxied.</param>436 /// <param name = "target">The target object, calls to which will be intercepted.</param>437 /// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>438 /// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>439 /// <returns>440 /// Object proxying calls to members of <paramref name = "interfaceToProxy" /> and <paramref441 /// name = "additionalInterfacesToProxy" /> types on <paramref name = "target" /> object or alternative implementation swapped at runtime by an interceptor.442 /// </returns>443 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>444 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "target" /> object is a null reference (Nothing in Visual Basic).</exception>445 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>446 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> or any of <paramref447 /// name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>448 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>449 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "target" /> does not implement <paramref450 /// name = "interfaceToProxy" /> interface.</exception>451 /// <exception cref = "MissingMethodException">Thrown when no default constructor exists on actual type of <paramref452 /// name = "target" /> object.</exception>453 /// <exception cref = "TargetInvocationException">Thrown when default constructor of actual type of <paramref454 /// name = "target" /> throws an exception.</exception>455 /// <remarks>456 /// This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.457 /// As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.458 /// </remarks>459 public object CreateInterfaceProxyWithTargetInterface(Type interfaceToProxy, Type[] additionalInterfacesToProxy,460 object target, params IInterceptor[] interceptors)461 {462 return CreateInterfaceProxyWithTargetInterface(interfaceToProxy, additionalInterfacesToProxy, target,463 ProxyGenerationOptions.Default, interceptors);464 }465 /// <summary>466 /// Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on <paramref467 /// name = "target" /> object with given <paramref name = "interceptors" />.468 /// Interceptors can use <see cref = "IChangeProxyTarget" /> interface to provide other target for method invocation than default <paramref469 /// name = "target" />.470 /// </summary>471 /// <param name = "interfaceToProxy">Type of the interface implemented by <paramref name = "target" /> which will be proxied.</param>472 /// <param name = "target">The target object, calls to which will be intercepted.</param>473 /// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>474 /// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>475 /// <returns>476 /// Object proxying calls to members of <paramref name = "interfaceToProxy" /> type on <paramref name = "target" /> object or alternative implementation swapped at runtime by an interceptor.477 /// </returns>478 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>479 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "target" /> object is a null reference (Nothing in Visual Basic).</exception>480 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>481 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is a generic type definition.</exception>482 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>483 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "target" /> does not implement <paramref484 /// name = "interfaceToProxy" /> interface.</exception>485 /// <exception cref = "MissingMethodException">Thrown when no default constructor exists on actual type of <paramref486 /// name = "target" /> object.</exception>487 /// <exception cref = "TargetInvocationException">Thrown when default constructor of actual type of <paramref488 /// name = "target" /> throws an exception.</exception>489 /// <remarks>490 /// This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.491 /// As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.492 /// </remarks>493 public object CreateInterfaceProxyWithTargetInterface(Type interfaceToProxy, object target,494 ProxyGenerationOptions options,495 params IInterceptor[] interceptors)496 {497 return CreateInterfaceProxyWithTargetInterface(interfaceToProxy, null, target, options, interceptors);498 }499 /// <summary>500 /// Creates proxy object intercepting calls to members of interface <paramref name = "interfaceToProxy" /> on <paramref name = "target" /> object with given <paramref name = "interceptors" />.501 /// Interceptors can use <see cref = "IChangeProxyTarget" /> interface to provide other target for method invocation than default <paramref name = "target" />.502 /// </summary>503 /// <param name = "interfaceToProxy">Type of the interface implemented by <paramref name = "target" /> which will be proxied.</param>504 /// <param name = "target">The target object, calls to which will be intercepted.</param>505 /// <param name = "options">The proxy generation options used to influence generated proxy type and object.</param>506 /// <param name = "additionalInterfacesToProxy">Additional interface types. Calls to their members will be proxied as well.</param>507 /// <param name = "interceptors">The interceptors called during the invocation of proxied methods.</param>508 /// <returns>509 /// Object proxying calls to members of <paramref name = "interfaceToProxy" /> and <paramref name = "additionalInterfacesToProxy" /> types on <paramref name = "target" /> object or alternative implementation swapped at runtime by an interceptor.510 /// </returns>511 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interfaceToProxy" /> object is a null reference (Nothing in Visual Basic).</exception>512 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "target" /> object is a null reference (Nothing in Visual Basic).</exception>513 /// <exception cref = "ArgumentNullException">Thrown when given <paramref name = "interceptors" /> array is a null reference (Nothing in Visual Basic).</exception>514 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> or any of <paramref name = "additionalInterfacesToProxy" /> is a generic type definition.</exception>515 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "interfaceToProxy" /> is not an interface type.</exception>516 /// <exception cref = "ArgumentException">Thrown when given <paramref name = "target" /> does not implement <paramref name = "interfaceToProxy" /> interface.</exception>517 /// <exception cref = "MissingMethodException">Thrown when no default constructor exists on actual type of <paramref name = "target" /> object.</exception>518 /// <exception cref = "TargetInvocationException">Thrown when default constructor of actual type of <paramref name = "target" /> throws an exception.</exception>519 /// <remarks>520 /// This method uses <see cref = "IProxyBuilder" /> implementation to generate a proxy type.521 /// As such caller should expect any type of exception that given <see cref = "IProxyBuilder" /> implementation may throw.522 /// </remarks>523#if FEATURE_SECURITY_PERMISSIONS && DOTNET40524 [SecuritySafeCritical]525#endif526 public virtual object CreateInterfaceProxyWithTargetInterface(Type interfaceToProxy,527 Type[] additionalInterfacesToProxy,528 object target, ProxyGenerationOptions options,529 params IInterceptor[] interceptors)530 {531 //TODO: add <example> to xml comments to show how to use IChangeProxyTarget532 if (interfaceToProxy == null)533 {534 throw new ArgumentNullException("interfaceToProxy");535 }536 // In the case of a transparent proxy, the call to IsInstanceOfType was executed on the real object.537 if (target != null && interfaceToProxy.IsInstanceOfType(target) == false)538 {539 throw new ArgumentException("Target does not implement interface " + interfaceToProxy.FullName, "target");540 }541 if (interceptors == null)542 {543 throw new ArgumentNullException("interceptors");544 }545 if (!interfaceToProxy.GetTypeInfo().IsInterface)546 {547 throw new ArgumentException("Specified type is not an interface", "interfaceToProxy");548 }549 var isRemotingProxy = false;550#if FEATURE_REMOTING551 if (target != null)552 {553 isRemotingProxy = RemotingServices.IsTransparentProxy(target);554 if (!isRemotingProxy && Marshal.IsComObject(target))555 {556 var interfaceId = interfaceToProxy.GUID;557 if (interfaceId != Guid.Empty)558 {559 var iUnknown = Marshal.GetIUnknownForObject(target); // Increment the reference count560 var interfacePointer = IntPtr.Zero;561 var result = Marshal.QueryInterface(iUnknown, ref interfaceId, out interfacePointer); // Increment the reference count562 var isInterfacePointerNull = interfacePointer == IntPtr.Zero;563 Marshal.Release(iUnknown); // Decrement the reference count564 if (!isInterfacePointerNull)565 {566 Marshal.Release(interfacePointer); // Decrement the reference count567 }568 if (result == 0 && isInterfacePointerNull)569 {570 throw new ArgumentException("Target COM object does not implement interface " + interfaceToProxy.FullName,571 "target");572 }573 }574 }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>...
GetConstructorArguments
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Telerik.JustMock.Core;7using Telerik.JustMock.Core.Castle.DynamicProxy;8using Telerik.JustMock.Helpers;9{10 {11 string Name { get; set; }12 }13 {14 public Test(string name)15 {16 this.Name = name;17 }18 public string Name { get; set; }19 }20 {21 public Test2(string name)22 {23 this.Name = name;24 }25 public string Name { get; set; }26 }27 {28 public Test3(string name)29 {30 this.Name = name;31 }32 public string Name { get; set; }33 }34 {35 public Test4(string name)36 {37 this.Name = name;38 }39 public string Name { get; set; }40 }41 {42 public Test5(string name)43 {44 this.Name = name;45 }46 public string Name { get; set; }47 }48 {49 public Test6(string name)50 {51 this.Name = name;52 }53 public string Name { get; set; }54 }55 {56 public Test7(string name)57 {58 this.Name = name;59 }60 public string Name { get; set; }61 }62 {63 public Test8(string name)64 {65 this.Name = name;66 }67 public string Name { get; set; }68 }69 {70 public Test9(string name)71 {72 this.Name = name;73 }74 public string Name { get; set; }75 }76 {77 public Test10(string name)78 {79 this.Name = name;80 }81 public string Name { get; set; }82 }83 {84 public Test11(string name)85 {86 this.Name = name;
GetConstructorArguments
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Telerik.JustMock.Core;7using Telerik.JustMock.Core.Castle.DynamicProxy;8{9 {10 public void Method()11 {12 var proxyGenerator = new ProxyGenerator();13 var proxy = proxyGenerator.CreateClassProxy(typeof(Class2));14 var arguments = proxyGenerator.GetConstructorArguments(typeof(Class2));15 }16 }17 {18 }19}20using System;21using System.Collections.Generic;22using System.Linq;23using System.Text;24using System.Threading.Tasks;25using Telerik.JustMock.Core;26using Telerik.JustMock.Core.Castle.DynamicProxy;27{28 {29 public void Method()30 {31 var proxyGenerator = new ProxyGenerator();32 var proxy = proxyGenerator.CreateClassProxy(typeof(Class2), new object[] {1,2,3});33 var arguments = proxyGenerator.GetConstructorArguments(typeof(Class2));34 }35 }36 {37 public Class2(int a, int b, int c)38 {39 }40 }41}42using System;43using System.Collections.Generic;44using System.Linq;45using System.Text;46using System.Threading.Tasks;47using Telerik.JustMock.Core;48using Telerik.JustMock.Core.Castle.DynamicProxy;49{50 {51 public void Method()52 {53 var proxyGenerator = new ProxyGenerator();54 var proxy = proxyGenerator.CreateClassProxy(typeof(Class2), new object[] { 1, 2, 3 });55 var arguments = proxyGenerator.GetConstructorArguments(typeof(Class2));56 }57 }58 {59 public Class2(int a, int b, int c)60 {61 }62 }63}64using System;65using System.Collections.Generic;66using System.Linq;67using System.Text;68using System.Threading.Tasks;
GetConstructorArguments
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 ProxyGenerator proxyGenerator = new ProxyGenerator();12 var constructorArguments = proxyGenerator.GetConstructorArguments(typeof(Class1));13 }14 }15 {16 public Class1(string name)17 {18 }19 }20}
GetConstructorArguments
Using AI Code Generation
1using System;2using System.Reflection;3using Telerik.JustMock.Core.Castle.DynamicProxy;4{5 {6 static void Main(string[] args)7 {8 ProxyGenerator proxyGenerator = new ProxyGenerator();9 Type type = proxyGenerator.ProxyBuilder.ModuleScope.Module.GetType("ConsoleApplication1.Class1");10 ConstructorInfo constructorInfo = type.GetConstructor(new Type[0]);11 object[] arguments = proxyGenerator.GetConstructorArguments(constructorInfo);12 Console.WriteLine("Hello World!");13 }14 }15 {16 public Class1()17 {18 }19 }20}
GetConstructorArguments
Using AI Code Generation
1 using System;2 using System.Reflection;3 using Telerik.JustMock.Core.Castle.DynamicProxy;4 {5 {6 static void Main(string[] args)7 {8 var generator = new ProxyGenerator();9 var proxy = generator.CreateClassProxy(typeof(MyClass), new object[] { 1, 2, 3 }, new object[] { 4, 5, 6 });10 var constructorArguments = generator.GetConstructorArguments(proxy);11 foreach (var argument in constructorArguments)12 {13 Console.WriteLine(argument);14 }15 }16 }17 {18 public MyClass(int a, int b, int c)19 {20 }21 }22 }
GetConstructorArguments
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 public void Method1()10 {11 var generator = new ProxyGenerator();12 var arguments = generator.GetConstructorArguments(typeof(Class1));13 Console.WriteLine(arguments.Length);14 }15 }16}17using System;18using System.Collections.Generic;19using System.Linq;20using System.Text;21using System.Threading.Tasks;22using Telerik.JustMock.Core.Castle.DynamicProxy;23{24 {25 public void Method1()26 {27 var generator = new ProxyGenerator();28 var arguments = generator.GetConstructorArguments(typeof(Class1));29 Console.WriteLine(arguments.Length);30 }31 }32}33using System;34using System.Collections.Generic;35using System.Linq;36using System.Text;37using System.Threading.Tasks;38using Telerik.JustMock.Core.Castle.DynamicProxy;39{40 {41 public void Method1()42 {43 var generator = new ProxyGenerator();44 var arguments = generator.GetConstructorArguments(typeof(Class1));45 Console.WriteLine(arguments.Length);46 }47 }48}49using System;50using System.Collections.Generic;51using System.Linq;52using System.Text;53using System.Threading.Tasks;54using Telerik.JustMock.Core.Castle.DynamicProxy;55{56 {57 public void Method1()58 {59 var generator = new ProxyGenerator();60 var arguments = generator.GetConstructorArguments(typeof(Class1));61 Console.WriteLine(arguments.Length);62 }63 }64}65using System;66using System.Collections.Generic;67using System.Linq;68using System.Text;69using System.Threading.Tasks;70using Telerik.JustMock.Core.Castle.DynamicProxy;
GetConstructorArguments
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6{7 {8 static void Main(string[] args)9 {10 var proxy = Telerik.JustMock.Mock.Create<ICustomer>();11 var generator = new Telerik.JustMock.Core.Castle.DynamicProxy.ProxyGenerator();12 var constructorArguments = generator.GetConstructorArguments(proxy);13 Console.WriteLine(constructorArguments);14 Console.ReadLine();15 }16 }
Learn 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!!