public classDynamicClassHelper
{///
///创建属性///
///
///
private static string Propertystring(stringpropertyname)
{
StringBuilder sbproperty= newStringBuilder();
sbproperty.Append("private string _" + propertyname + "= null;\n");
sbproperty.Append("public string" + "" + propertyname + "\n");
sbproperty.Append("{\n");
sbproperty.Append("get{ return _" + propertyname + ";} \n");
sbproperty.Append("set{ _" + propertyname + "= value; }\n");
sbproperty.Append("}");returnsbproperty.ToString();
}///
///创建动态类///
/// 属性列表
///
public static Assembly Newassembly(ListpropertyList)
{//创建编译器实例。
CSharpCodeProvider provider = newCSharpCodeProvider();//设置编译参数。
CompilerParameters paras = newCompilerParameters();
paras.GenerateExecutable= false;
paras.GenerateInMemory= true;//创建动态代码。
StringBuilder classsource = newStringBuilder();
classsource.Append("public class dynamicclass \n");
classsource.Append("{\n");//创建属性。
for (int i = 0; i < propertyList.Count; i++)
{
classsource.Append(Propertystring(propertyList[i]));
}
classsource.Append("}");
System.Diagnostics.Debug.WriteLine(classsource.ToString());//编译代码。
CompilerResults result =provider.CompileAssemblyFromSource(paras, classsource.ToString());//获取编译后的程序集。
Assembly assembly =result.CompiledAssembly;returnassembly;
}///
///给属性赋值///
///
///
///
public static void Reflectionsetproperty(object objclass, string propertyname, stringvalue)
{
PropertyInfo[] infos=objclass.GetType().GetProperties();foreach (PropertyInfo info ininfos)
{if (info.Name == propertyname &&info.CanWrite)
{
info.SetValue(objclass, value,null);
}
}
}///
///得到属性值///
///
///
public static void Reflectiongetproperty(object objclass, stringpropertyname)
{
PropertyInfo[] infos=objclass.GetType().GetProperties();foreach (PropertyInfo info ininfos)
{if (info.Name == propertyname &&info.CanRead)
{
System.Console.WriteLine(info.GetValue(objclass,null));
}
}
}
}