通过反射得到object[]数组的类型并且的到此类型所有的字段及字段的值

时间:2022-02-20 03:09:31

private string T_Account(object[] list)
{
StringBuilder code = new StringBuilder();
//得到数据类型
Type t = list[0].GetType();
List<string> str = new List<string>();
//得到类型的所有字段
FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
code.AppendLine("<table class='mytable'><thead><tr>");
foreach (FieldInfo fi in fields)
{
//提取反编译后字段名
Match m = Regex.Match(fi.Name, @"(?<=\<).+(?=\>)");
code.Append("<td>").Append(m.Value).AppendLine("</td>");
str.Add(m.Value);
}
code.AppendLine("</tr>");
for(int i=0;i<list.Length;i++)
{
object ob=Activator.CreateInstance(t);
code.AppendLine("<tr>");
foreach (FieldInfo fi in fields)
{
//提取反编译后字段名
Match m = Regex.Match(fi.Name, @"(?<=\<).+(?=\>)");
//得到类相应字段的值
code.Append("<td>").Append(fi.GetValue(list[0])).AppendLine("</td>");
str.Add(m.Value);
}
code.AppendLine("</tr>");
}
code.AppendLine("</table>");
string s = code.ToString();
return code.ToString();
}