You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
4 years ago
|
#if !UNITY_METRO
|
||
|
|
||
|
using System.Reflection;
|
||
|
using System.Reflection.Emit;
|
||
|
|
||
|
namespace MessagePack.Internal
|
||
|
{
|
||
|
internal class DynamicAssembly
|
||
|
{
|
||
|
#if NET_35
|
||
|
readonly string moduleName;
|
||
|
#endif
|
||
|
readonly AssemblyBuilder assemblyBuilder;
|
||
|
readonly ModuleBuilder moduleBuilder;
|
||
|
|
||
|
public ModuleBuilder ModuleBuilder { get { return moduleBuilder; } }
|
||
|
|
||
|
public DynamicAssembly(string moduleName)
|
||
|
{
|
||
|
#if NET_35
|
||
|
this.moduleName = moduleName;
|
||
|
this.assemblyBuilder = System.AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(moduleName), AssemblyBuilderAccess.RunAndSave);
|
||
|
this.moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName, moduleName + ".dll");
|
||
|
#else
|
||
|
#if NETSTANDARD1_4
|
||
|
this.assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(moduleName), AssemblyBuilderAccess.Run);
|
||
|
#else
|
||
|
this.assemblyBuilder = System.AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(moduleName), AssemblyBuilderAccess.Run);
|
||
|
#endif
|
||
|
|
||
|
this.moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
#if NET_35
|
||
|
|
||
|
public AssemblyBuilder Save()
|
||
|
{
|
||
|
assemblyBuilder.Save(moduleName + ".dll");
|
||
|
return assemblyBuilder;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|