private static void CheckBuildPreconditions(this ProxyContext @this) { if (@this == null) { throw new ArgumentNullException("this", ProxyBuilder.ErrorProxyContextIsNull); } }
public static void Build(ReadOnlyCollection<Type> targets, ProxyContext context) { targets.CheckBuildPreconditions(); context.CheckBuildPreconditions(); foreach (var target in targets) { target.CheckBuildPreconditions(); } var nonProxiedTypes = new List<Type>( targets.Where(target => { return !BuiltProxies.Mappings.ContainsKey(target); }) ); if (nonProxiedTypes.Count > 0) { var items = ProxyBuilder.Generate(targets[0], context); foreach (var target in targets) { ProxyBuilder.Build(target, items); } ProxyBuilder.Save(items.Assembly, context); } }
public static void Build(ReadOnlyCollection <Type> targets, ProxyContext context) { targets.CheckBuildPreconditions(); context.CheckBuildPreconditions(); foreach (var target in targets) { target.CheckBuildPreconditions(); } var nonProxiedTypes = new List <Type>( targets.Where(target => { return(!BuiltProxies.Mappings.ContainsKey(target)); }) ); if (nonProxiedTypes.Count > 0) { var items = ProxyBuilder.Generate(targets[0], context); foreach (var target in targets) { ProxyBuilder.Build(target, items); } ProxyBuilder.Save(items.Assembly, context); } }
public static void Build(Type target, ProxyContext context) { target.CheckBuildPreconditions(); context.CheckBuildPreconditions(); var items = ProxyBuilder.Generate(target, context); ProxyBuilder.Build(target, items); ProxyBuilder.Save(items.Assembly, context); }
private static void Save(AssemblyBuilder assembly, ProxyContext context) { if ((context.Access & AssemblyBuilderAccess.Save) == AssemblyBuilderAccess.Save) { assembly.Save(assembly.GetName().Name + ".dll"); if (context.Verify) { AssemblyVerification.Verify(assembly); } } }
private static ProxyBuilderGeneratorItems Generate(Type target, ProxyContext context) { var proxyAssemblyName = target.Assembly.GetName().Clone() as AssemblyName; proxyAssemblyName.Name = target.Namespace + "." + target.Name + "." + Proxy.ProxyExtension; var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly( proxyAssemblyName, context.Access); if (context.GenerateDebugging) { var debugAttribute = typeof(DebuggableAttribute); var debugConstructor = debugAttribute.GetConstructor( new Type[] { typeof(DebuggableAttribute.DebuggingModes) }); var debugBuilder = new CustomAttributeBuilder( debugConstructor, new object[] { DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.Default }); assembly.SetCustomAttribute(debugBuilder); } ModuleBuilder module = null; if ((context.Access & AssemblyBuilderAccess.Save) == AssemblyBuilderAccess.Save) { module = assembly.DefineDynamicModule(assembly.GetName().Name, assembly.GetName().Name + ".dll", context.GenerateDebugging); } else { module = assembly.DefineDynamicModule(assembly.GetName().Name, context.GenerateDebugging); } ISymbolDocumentWriter symbolDocumentWriter = null; if (context.GenerateDebugging) { symbolDocumentWriter = module.DefineDocument( assembly.GetName().Name + ".il", SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft); } return(new ProxyBuilderGeneratorItems(assembly, module, symbolDocumentWriter)); }
public static T Create <T>(ProxyContext context, params IInvocationHandler[] handlers) where T : class, new() { return(new T().CreateProxy(context, handlers)); }
private static ProxyBuilderGeneratorItems Generate(Type target, ProxyContext context) { var proxyAssemblyName = target.Assembly.GetName().Clone() as AssemblyName; proxyAssemblyName.Name = target.Namespace + "." + target.Name + "." + Proxy.ProxyExtension; var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly( proxyAssemblyName, context.Access); if (context.GenerateDebugging) { var debugAttribute = typeof(DebuggableAttribute); var debugConstructor = debugAttribute.GetConstructor( new Type[] { typeof(DebuggableAttribute.DebuggingModes) }); var debugBuilder = new CustomAttributeBuilder( debugConstructor, new object[] { DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.Default }); assembly.SetCustomAttribute(debugBuilder); } ModuleBuilder module = null; if ((context.Access & AssemblyBuilderAccess.Save) == AssemblyBuilderAccess.Save) { module = assembly.DefineDynamicModule(assembly.GetName().Name, assembly.GetName().Name + ".dll", context.GenerateDebugging); } else { module = assembly.DefineDynamicModule(assembly.GetName().Name, context.GenerateDebugging); } ISymbolDocumentWriter symbolDocumentWriter = null; if (context.GenerateDebugging) { symbolDocumentWriter = module.DefineDocument( assembly.GetName().Name + ".il", SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft); } return new ProxyBuilderGeneratorItems(assembly, module, symbolDocumentWriter); }