Transform/EntityTo.cs
(完整代码) 1KBusing System;
using System.Data;
using System.Linq;
using System.Reflection;
using DataObject.Attrib;
using System.Text.RegularExpressions;
namespace DataObject.Transform
{
/// <summary>
/// 实体信息转化
/// </summary>
public sealed class EntityTo
{
/// <summary>
/// 实体对象转化为表格行信息
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="t">对象</param>
/// <returns>表格信息</returns>
public static DataRow SetData<T>(T t) {
//设置表格
DataTable table = new DataTable();
SetData(table, t);
return table.Rows.Count == 0 ? null : table.Rows[0];
}
/// <summary>
/// 实体对象转化为表格行信息
/// </summary>
/// <param name="table">表格</param>
/// <param name="obj">实体对象</param>
private static void SetData(DataTable table, object obj){
//添加行信息
if (table.Rows.Count == 0) table.Rows.Add();
DataRow dr = table.Rows[0];
//设置行信息
PropertyInfo[] infos = obj.GetType().GetProperties();
foreach (PropertyInfo p in infos) {
//设置标头
if (p.GetCustomAttributes(typeof(DBColumn), true).Length > 0){
if (p.PropertyType.BaseType.Namespace == "System"){
if (!table.Columns.Contains(p.Name))
table.Columns.Add(new DataColumn(p.Name, Type.GetType(Regex.Match(p.PropertyType.ToString(), @"(^(\w+\.?)+$|(?<=\[)(\w+\.?)+)").Value)));
dr[p.Name] = p.GetValue(obj, null) ?? DBNull.Value;//设置值
}else
SetData(table, p);
}
}
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。