public TemplateLoader(Assembly assembly) { try { TemplateAssemblyDir = Path.GetDirectoryName(assembly.Location); AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve); foreach (Type type in assembly.GetTypes()) { if (type.Name != "TemplateGen") { continue; } _ProjectNamespace = type.Namespace; _TemplateGenInstance = assembly.CreateInstance(type.FullName); break; } } catch (ReflectionTypeLoadException ex) { string message = ""; foreach (var tle in ex.LoaderExceptions) { message += tle.Message + Environment.NewLine; } throw new Exception(message); } finally { AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve; } if (_TemplateGenInstance == null) { throw new ArgumentException("Could not find a class called TemplateGen in the given template assembly"); } CurrentAssembly = assembly; _ScriptRunnerInstance = (ScriptFunctionWrapper)CurrentAssembly.CreateInstance(_ProjectNamespace + ".ScriptFunctionWrapper"); _TemplateGenInstance = CurrentAssembly.CreateInstance(_ProjectNamespace + ".TemplateGen"); _UserOptionsType = CurrentAssembly.GetType(_ProjectNamespace + ".TemplateGen+UserOptions"); _VirtualPropertiesType = CurrentAssembly.GetType(_ProjectNamespace + ".VirtualProperties"); _LangAttributeType = CurrentAssembly.GetType(_ProjectNamespace + ".LanguageAttribute"); }
public TemplateLoader(Assembly assembly) { try { TemplateAssemblyDir = Path.GetDirectoryName(assembly.Location); AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve); foreach (Type type in assembly.GetTypes()) { if (type.Name != "TemplateGen") continue; _ProjectNamespace = type.Namespace; _TemplateGenInstance = assembly.CreateInstance(type.FullName); break; } } catch (ReflectionTypeLoadException ex) { string message = ""; foreach (var tle in ex.LoaderExceptions) { message += tle.Message + Environment.NewLine; } throw new Exception(message); } finally { AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve; } if (_TemplateGenInstance == null) throw new ArgumentException("Could not find a class called TemplateGen in the given template assembly"); CurrentAssembly = assembly; _ScriptRunnerInstance = (ScriptFunctionWrapper)CurrentAssembly.CreateInstance(_ProjectNamespace + ".ScriptFunctionWrapper"); _TemplateGenInstance = CurrentAssembly.CreateInstance(_ProjectNamespace + ".TemplateGen"); _UserOptionsType = CurrentAssembly.GetType(_ProjectNamespace + ".TemplateGen+UserOptions"); _VirtualPropertiesType = CurrentAssembly.GetType(_ProjectNamespace + ".VirtualProperties"); _LangAttributeType = CurrentAssembly.GetType(_ProjectNamespace + ".LanguageAttribute"); }