在网上找到如下代码:
(出处:http://www.cnblogs.com/ShadowK/archive/2006/11/14/560131.html)
/**//// <summary>
/// 根据类名创建一个没有成员的类型的实例。
/// </summary>
/// <param name="className">将要创建的类型的实例的类名。</param>
/// <returns>返回创建的类型的实例。</returns>
public static Type BuildType(string className)
{ AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly"; //创建一个永久程序集,设置为AssemblyBuilderAccess.RunAndSave。
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(myAsmName,
AssemblyBuilderAccess.RunAndSave); //创建一个永久单模程序块。
ModuleBuilder myModBuilder =
myAsmBuilder.DefineDynamicModule(myAsmName.Name, myAsmName.Name + ".dll");
//创建TypeBuilder。
TypeBuilder myTypeBuilder = myModBuilder.DefineType(className,
TypeAttributes.Public); //创建类型。
Type retval = myTypeBuilder.CreateType(); //保存程序集,以便可以被Ildasm.exe解析,或被测试程序引用。
myAsmBuilder.Save(myAsmName.Name + ".dll");
return retval;
}
以上代码在运行时可生成一个DLL文件,将生成的DLL引用到项目中,使用正常.
但生成的类(DLL文件)没有命名空间,研究了N久,实在找不到如何给类(DLL)添加命名空间.各位大虾,谁有更好的动态生成DLL的方法或知道如何修改此段代码,可以动态为类添加命名空间,20分相送,多谢.
(出处:http://www.cnblogs.com/ShadowK/archive/2006/11/14/560131.html)
/**//// <summary>
/// 根据类名创建一个没有成员的类型的实例。
/// </summary>
/// <param name="className">将要创建的类型的实例的类名。</param>
/// <returns>返回创建的类型的实例。</returns>
public static Type BuildType(string className)
{ AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly"; //创建一个永久程序集,设置为AssemblyBuilderAccess.RunAndSave。
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(myAsmName,
AssemblyBuilderAccess.RunAndSave); //创建一个永久单模程序块。
ModuleBuilder myModBuilder =
myAsmBuilder.DefineDynamicModule(myAsmName.Name, myAsmName.Name + ".dll");
//创建TypeBuilder。
TypeBuilder myTypeBuilder = myModBuilder.DefineType(className,
TypeAttributes.Public); //创建类型。
Type retval = myTypeBuilder.CreateType(); //保存程序集,以便可以被Ildasm.exe解析,或被测试程序引用。
myAsmBuilder.Save(myAsmName.Name + ".dll");
return retval;
}
以上代码在运行时可生成一个DLL文件,将生成的DLL引用到项目中,使用正常.
但生成的类(DLL文件)没有命名空间,研究了N久,实在找不到如何给类(DLL)添加命名空间.各位大虾,谁有更好的动态生成DLL的方法或知道如何修改此段代码,可以动态为类添加命名空间,20分相送,多谢.
你可以试试"ttt.bbb",就知道结果了
namespace为ttt,name为bbb