Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Produces new assembly at runtime.
- /// </summary>
- /// <param name="references">The assembly references.</param>
- /// <param name="sourceCode">The source code to compile.</param>
- /// <param name="outputAssemblyName">Output dll name.</param>
- /// <returns>Compilation result</returns>
- private CompilerResults ProduceAssembly(string[] references,
- string sourceCode,
- string outputAssemblyName)
- {
- CSharpCodeProvider codeProvider = new CSharpCodeProvider();
- ICodeCompiler codeCompiler = codeProvider.CreateCompiler();
- CompilerParameters compilerParameters =
- new CompilerParameters(references,
- outputAssemblyName);
- compilerParameters.GenerateExecutable = false;
- compilerParameters.GenerateInMemory = false;
- return codeCompiler.CompileAssemblyFromSource(compilerParameters,
- sourceCode);
- }
- /// <summary>
- /// Creates new object from dynamicaly loaded assembly
- /// </summary>
- /// <param name="AssemblyName">Name of the assembly to load.</param>
- /// <param name="className">Name of the class to instanciate.</param>
- /// <param name="constructorParameters">The constructor parameters.</param>
- private bool CreateObjectFromAssembly(string AssemblyName,
- string className,
- object[] constructorParameters,
- out object createdObject)
- {
- object tmp = createdObject = null;
- Assembly myAssembly = Assembly.LoadFrom(AssemblyName);
- Module[] myModules = myAssembly.GetModules();
- myModules.Where(module => module.Name == AssemblyName)
- .Select(module => module.GetTypes())
- .ToList()
- .ForEach
- (
- t => t.Where(types => types.Name == className)
- .ToList()
- .ForEach(
- type => tmp = Activator.CreateInstance(type,
- constructorParameters))
- );
- createdObject = tmp;
- return createdObject != null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement