private static ProxyGeneratorResult GenerateProxy( Type typeOfProxy, ProxyGenerationOptions options, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(typeOfProxy, nameof(typeOfProxy)); Guard.AgainstNull(additionalInterfacesToImplement, nameof(additionalInterfacesToImplement)); Guard.AgainstNull(fakeCallProcessorProvider, nameof(fakeCallProcessorProvider)); if (typeOfProxy.GetTypeInfo().IsValueType) { return GetProxyResultForValueType(typeOfProxy); } if (typeOfProxy.GetTypeInfo().IsSealed) { return new ProxyGeneratorResult(DynamicProxyResources.ProxyIsSealedTypeMessage.FormatInvariant(typeOfProxy)); } GuardAgainstConstructorArgumentsForInterfaceType(typeOfProxy, argumentsForConstructor); return CreateProxyGeneratorResult(typeOfProxy, options, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public virtual ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IEnumerable<CustomAttributeBuilder> customAttributeBuilders, IFakeCallProcessorProvider fakeCallProcessorProvider) { return this.GenerateProxy(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { var options = CreateProxyGenerationOptions(); return GenerateProxy(typeOfProxy, options, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IEnumerable<CustomAttributeBuilder> customAttributeBuilders, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(customAttributeBuilders, nameof(customAttributeBuilders)); var options = CreateProxyGenerationOptions(); foreach (CustomAttributeBuilder builder in customAttributeBuilders) { options.AdditionalAttributes.Add(builder); } return GenerateProxy(typeOfProxy, options, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IEnumerable<Expression<Func<Attribute>>> attributes, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(attributes, nameof(attributes)); var options = CreateProxyGenerationOptions(); foreach (var attribute in attributes) { options.AdditionalAttributes.Add(CustomAttributeInfo.FromExpression(attribute)); } return GenerateProxy(typeOfProxy, options, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IEnumerable<CustomAttributeBuilder> customAttributeBuilders, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(customAttributeBuilders, "customAttributeBuilders"); Guard.AgainstNull(fakeCallProcessorProvider, "fakeCallProcessorProvider"); ProxyGenerationOptions.AdditionalAttributes.Clear(); foreach (CustomAttributeBuilder builder in customAttributeBuilders) { ProxyGenerationOptions.AdditionalAttributes.Add(builder); } return this.GenerateProxy(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public virtual ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(typeOfProxy, nameof(typeOfProxy)); if (!typeof(Delegate).IsAssignableFrom(typeOfProxy)) { return new ProxyGeneratorResult("The delegate proxy generator can only create proxies for delegate types."); } var invokeMethod = typeOfProxy.GetMethod("Invoke"); var eventRaiser = new DelegateCallInterceptedEventRaiser(fakeCallProcessorProvider, invokeMethod, typeOfProxy); fakeCallProcessorProvider.EnsureInitialized(eventRaiser.Instance); return new ProxyGeneratorResult(eventRaiser.Instance); }
public ProxyInterceptor(IFakeCallProcessorProvider fakeCallProcessorProvider) { this.fakeCallProcessorProvider = fakeCallProcessorProvider; }
public DelegateCallInterceptedEventRaiser(IFakeCallProcessorProvider fakeCallProcessorProvider, MethodInfo method, Type type) { this.fakeCallProcessorProvider = fakeCallProcessorProvider; this.method = method; this.Instance = CreateDelegateProxy(type, method, this); }
public ProxyGeneratorResult GenerateProxy(Type typeOfProxy, System.Collections.Generic.IEnumerable <Type> additionalInterfacesToImplement, System.Collections.Generic.IEnumerable <object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { var generator = this.SelectProxyGenerator(typeOfProxy); return(generator.GenerateProxy(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider)); }
private static ProxyGeneratorResult CreateProxyGeneratorResult( Type typeOfProxy, ProxyGenerationOptions options, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { var interceptor = new ProxyInterceptor(fakeCallProcessorProvider); object proxy; try { proxy = DoGenerateProxy( typeOfProxy, options, additionalInterfacesToImplement, argumentsForConstructor, interceptor); } catch (Exception e) { return GetResultForFailedProxyGeneration(typeOfProxy, argumentsForConstructor, e); } fakeCallProcessorProvider.EnsureInitialized(proxy); return new ProxyGeneratorResult(generatedProxy: proxy); }
private static ProxyGeneratorResult CreateProxyGeneratorResult(Type typeOfProxy, IEnumerable <Type> additionalInterfacesToImplement, IEnumerable <object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { var interceptor = new ProxyInterceptor(fakeCallProcessorProvider); object proxy; try { proxy = DoGenerateProxy( typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, interceptor); } catch (Exception e) { return(GetResultForFailedProxyGeneration(typeOfProxy, argumentsForConstructor, e)); } fakeCallProcessorProvider.EnsureInitialized(proxy); return(new ProxyGeneratorResult(generatedProxy: proxy)); }
public ProxyGeneratorResult GenerateProxy(Type typeOfProxy, IEnumerable <Type> additionalInterfacesToImplement, IEnumerable <object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(typeOfProxy, "typeOfProxy"); Guard.AgainstNull(additionalInterfacesToImplement, "additionalInterfacesToImplement"); Guard.AgainstNull(fakeCallProcessorProvider, "fakeCallProcessorProvider"); if (typeOfProxy.IsValueType) { return(GetProxyResultForValueType(typeOfProxy)); } if (typeOfProxy.IsSealed) { return(new ProxyGeneratorResult(DynamicProxyResources.ProxyIsSealedTypeMessage.FormatInvariant(typeOfProxy))); } GuardAgainstConstructorArgumentsForInterfaceType(typeOfProxy, argumentsForConstructor); return(CreateProxyGeneratorResult(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider)); }
public ProxyGeneratorResult GenerateProxy(Type typeOfProxy, IEnumerable <Type> additionalInterfacesToImplement, IEnumerable <object> argumentsForConstructor, IEnumerable <Expression <Func <Attribute> > > attributes, IFakeCallProcessorProvider fakeCallProcessorProvider) { var generator = this.SelectProxyGenerator(typeOfProxy); return(generator.GenerateProxy(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, attributes, fakeCallProcessorProvider)); }
public DelegateCallInterceptedEventRaiser(IFakeCallProcessorProvider fakeCallProcessorProvider) { this.fakeCallProcessorProvider = fakeCallProcessorProvider; }
public virtual ProxyGeneratorResult GenerateProxy( Type typeOfProxy, IEnumerable <Type> additionalInterfacesToImplement, IEnumerable <object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { Guard.AgainstNull(typeOfProxy, "typeOfProxy"); if (!typeof(Delegate).IsAssignableFrom(typeOfProxy)) { return (new ProxyGeneratorResult("The delegate proxy generator can only create proxies for delegate types.")); } var invokeMethod = typeOfProxy.GetMethod("Invoke"); var eventRaiser = new DelegateCallInterceptedEventRaiser(fakeCallProcessorProvider); var proxy = CreateDelegateProxy(typeOfProxy, invokeMethod, eventRaiser); eventRaiser.Method = invokeMethod; eventRaiser.Instance = proxy; fakeCallProcessorProvider.EnsureInitialized(proxy); return(new ProxyGeneratorResult(proxy)); }
public ProxyGeneratorResult GenerateProxy(Type typeOfProxy, System.Collections.Generic.IEnumerable<Type> additionalInterfacesToImplement, System.Collections.Generic.IEnumerable<object> argumentsForConstructor, IFakeCallProcessorProvider fakeCallProcessorProvider) { var generator = this.SelectProxyGenerator(typeOfProxy); return generator.GenerateProxy(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, fakeCallProcessorProvider); }
public ProxyGeneratorResult GenerateProxy(Type typeOfProxy, IEnumerable<Type> additionalInterfacesToImplement, IEnumerable<object> argumentsForConstructor, IEnumerable<Expression<Func<Attribute>>> attributes, IFakeCallProcessorProvider fakeCallProcessorProvider) { var generator = this.SelectProxyGenerator(typeOfProxy); return generator.GenerateProxy(typeOfProxy, additionalInterfacesToImplement, argumentsForConstructor, attributes, fakeCallProcessorProvider); }