public void Convert_EvoPalAppsCommon() { // 1) Create a conversion container var container = EvoAssembly.CreateContainer(); // 2) Create a conversion container //var collectibleAssembly = container.Convert(typeof(AssemblyTests).Assembly, AssemblyBuilderAccess.RunAndSave); var collectibleAssembly = container.Convert(typeof(AssemblyTests).Assembly, AssemblyBuilderAccess.RunAndCollect); // c prefix for converted. var modules = collectibleAssembly.GetModules(); var module = modules[0]; var collectibleAssemblyBuilder = (AssemblyBuilder)collectibleAssembly; //collectibleAssemblyBuilder.Save(module.ScopeName); var cEvoAssembly = XCommonAppPal.Api.Runtimic.Execution.Metadata.Assemblies.GetTypeInAssembly(collectibleAssembly, typeof(EvoAssembly)); var createContainerMethod = cEvoAssembly.GetMethod("CreateContainer", BindingFlags.Public | BindingFlags.Static, null, new [] { typeof(bool) }, null); var cContainer = createContainerMethod.Invoke(null, new object[] { true }); var cRuntimicContainer = XCommonAppPal.Api.Runtimic.Execution.Metadata.Assemblies.GetTypeInAssembly(collectibleAssembly, typeof(RuntimicContainer)); var cRuntimicContainerExts = XCommonAppPal.Api.Runtimic.Execution.Metadata.Assemblies.GetTypeInAssembly(collectibleAssembly, typeof(RuntimicContainerExts)); var convertMethod = cRuntimicContainerExts.GetMethod("Convert", BindingFlags.Public | BindingFlags.Static, null , new Type[] { cRuntimicContainer, typeof(System.Reflection.Assembly), typeof(AssemblyBuilderAccess) }, null); var result = convertMethod.Invoke(null, new [] { cContainer, typeof(AssemblyTests).Assembly, AssemblyBuilderAccess.RunAndCollect }); //try //{ // var types = collectibleAssembly.GetTypes(); //} //catch (System.Reflection.ReflectionTypeLoadException e) //{ // //for (int j = 0; j < e.LoaderExceptions.Length; j++) // //{ // // Console.WriteLine(e.LoaderExceptions[j].Message); // //} // throw e.LoaderExceptions[0]; //} }
public void Perform() { // Example1: Convert a type var convertedType = EvoAssembly.QuickConvert(typeof(Example1)); // Example2: Convert an assembly var convertedAssembly = EvoAssembly.QuickConvert(typeof(Example1).Assembly); // Example3: Convert an array of types var convertedTypes = EvoAssembly.QuickConvert(new Type[] { typeof(Example1) }); // Example4: Convert an array of assemblies var convertedAssemblies = EvoAssembly.QuickConvert(new [] { typeof(Example1).Assembly }); }
public System.Type ConvertSingleType(System.Type type, ILConversionOptions options, out Assembly collectibleAssembly) { // Use the default static api to create a container to do the conversion. var container = EvoAssembly.CreateContainer(); // do the conversion var conversionResult = container.Convert(type, options); Assert.IsNotNull(conversionResult); var output = (ILConversionTypesOutput)conversionResult.Output; var collectibleType = output.Types[0]; collectibleAssembly = collectibleType.Assembly; Assert.IsTrue(collectibleAssembly.IsDynamic); Assert.IsNotNull(collectibleType); if (options.BuilderAccess == AssemblyBuilderAccess.RunAndSave) { var saveAssembly = conversionResult.Output.Assemblies[0]; if (saveAssembly is AssemblyBuilder builder) { var modules = collectibleAssembly.GetModules(); var module = modules[0]; var fileName = module.ScopeName; builder.Save(fileName); } } return(collectibleType); }