Dot-Net

如何為通過 Reflection.Emit 創建的類型指定命名空間?

  • November 24, 2010

抱歉,如果我遺漏了一些明顯的東西,但是當我使用 Reflection.Emit 創建一個新類型時,我該如何指定它應該在哪個命名空間中?

IE..

AssemblyName assemblyName = new AssemblyName();
assemblyName.Name = "TestDynamic";

AssemblyBuilder assemblyBuilder = 
   AppDomain.CurrentDomain.DefineDynamicAssembly(
       assemblyName,   
       AssemblyBuilderAccess.Save);

ModuleBuilder moduleBuilder =    
   AssemblyBuilder.DefineDynamicModule("TestDynamic", "TestDynamic.dll");

TypeBuilder myTestInterface =
   moduleBuilder.DefineType("MyTestInterface", 
   TypeAttributes.Public | TypeAttributes.Interface, typeof(object));

如何為 命名空間myTestInterface

在定義類型的地方定義它:

moduleBuilder.DefineType("MyNamespace.MyTestInterface",
              TypeAttributes.Public | TypeAttributes.Interface,
               typeof(object));

只需將其放在“短”類型名稱之前。"Namespace.Subnamespace.Type"

引用自:https://stackoverflow.com/questions/4214643