Как указать пространство имен для типа, созданного с помощью Reflection.Emit? - PullRequest
9 голосов
/ 18 ноября 2010

Извиняюсь, если я упускаю что-то очевидное, но когда я создаю новый тип с Reflection.Emit, как мне указать, в каком пространстве имен он должен быть?

т.е. ..

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?

Ответы [ 2 ]

13 голосов
/ 18 ноября 2010

Определите его там, где вы определяете тип:

moduleBuilder.DefineType("MyNamespace.MyTestInterface",
               TypeAttributes.Public | TypeAttributes.Interface,
                typeof(object));
0 голосов
/ 18 ноября 2010

Просто поместите его перед «коротким» типом."Namespace.Subnamespace.Type"

...