public Type CreateType(string assemblyName, string moduleName, string className, string methodName, string[] values)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
AssemblyName name = new AssemblyName();
name.Name = assemblyName;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
AppDomain domain = System.Threading.Thread.GetDomain();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
AssemblyBuilder assBuilder = domain.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ModuleBuilder mb = assBuilder.DefineDynamicModule(moduleName);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
TypeBuilder theClass = mb.DefineType(className, TypeAttributes.Public & TypeAttributes.Class);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Type rtnType = typeof(int);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MethodBuilder method = theClass.DefineMethod(methodName, MethodAttributes.Public, rtnType, null);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ILGenerator gen = method.GetILGenerator();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gen.Emit(OpCodes.Ldc_I4, 0);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for (int i = 0; i < values.Length; i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
gen.Emit(OpCodes.Ldc_I4, int.Parse(values[i]));
gen.Emit(OpCodes.Add);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
gen.Emit(OpCodes.Ret);
return theClass.CreateType();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
catch (Exception ex)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return null;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
string[] values = new string[]
{ "1", "2", "3", "4" };
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Type MathOpsClass = CreateType("OurAssembly","OurModule", "MathOps", "ReturnSum", values);
object MathOpsInst = Activator.CreateInstance(MathOpsClass);
object obj3 = MathOpsClass.InvokeMember("ReturnSum",BindingFlags.InvokeMethod,null,MathOpsInst,null);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Response.Write(obj3.ToString());
posted @
2007-08-17 15:07
永不言败
阅读(
390)
评论()
编辑
收藏
举报