首先,查询数据库,得到所有的数据。并将所有的数据保存在DataTable中,并把查询到的表结构传给getC(DataTable t)
动态反射出bean之后,返回动态生成的MyFirstClass类。    关键问题就是我不知道如何赋值给它的set方法。希望有哪位高手可以帮我解决一下,或给点解决的办法和建议,在这里先谢谢了。
代码如下:
/// <summary>
/// GetC 构造Bean类
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public object GetC(DataTable d)
{
object objReturn;
FieldBuilder fieldBuilder = null;//类字段
PropertyBuilder propertyBuilder = null;//类属性
MethodAttributes getSetAttr;//指定方法属性的标志
MethodBuilder methodBuilder = null;//定义并表示动态的方法
ILGenerator ilGenerator = null;//生成Microsoft 中间语言 MSIL 指令
Type[] methodArgs ={ typeof(string) };//声明类型数组 AssemblyName name = new AssemblyName();
name.Name = "MyFirstAssembly"; AppDomain ad = System.Threading.Thread.GetDomain();
AssemblyBuilder abuilder = ad.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);        ModuleBuilder mbuilder = abuilder.DefineDynamicModule("MyFirstModule");        TypeBuilder theClass = mbuilder.DefineType("MyFirstClass", TypeAttributes.Public | TypeAttributes.Class);
        
        foreach (DataColumn dc in d.Columns)
        {
             fieldBuilder = theClass.DefineField( dc.ColumnName, dc.DataType, FieldAttributes.Public);
     propertyBuilder = theClass.DefineProperty(dc.ColumnName, System.Reflection.PropertyAttributes.HasDefault, dc.DataType, null);
             getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig;      methodBuilder = theClass.DefineMethod("get_" + dc.ColumnName, getSetAttr, typeof(string), Type.EmptyTypes);
     ilGenerator = methodBuilder.GetILGenerator();
     ilGenerator.Emit(OpCodes.Ldarg_0);
     ilGenerator.Emit(OpCodes.Ldfld, fieldBuilder);
     ilGenerator.Emit(OpCodes.Ret);
     propertyBuilder.SetGetMethod(methodBuilder);      methodBuilder = theClass.DefineMethod("set_" + dc.ColumnName,
     MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName,
     typeof(void), methodArgs);
     ilGenerator = methodBuilder.GetILGenerator();
     ilGenerator.Emit(OpCodes.Ldarg_0);
     ilGenerator.Emit(OpCodes.Ldarg_1);
     ilGenerator.Emit(OpCodes.Stfld, fieldBuilder);
     ilGenerator.Emit(OpCodes.Ret);
     propertyBuilder.SetSetMethod(methodBuilder);
        }
Type ReturnClass = theClass.CreateType();//创建引用
objReturn = Activator.CreateInstance(ReturnClass);//创建实例化 return objReturn;}