C#一样格式类型互转
来源:互联网 发布:骑士数据 编辑:程序博客网 时间:2024/05/21 11:17
public class TypeConverter
{
public static List<Toutput> ConvertAll<Tinput, Toutput>(List<Tinput> arrSourceObjects) where Toutput : class
{
if (arrSourceObjects != null)
{
List<Toutput> list = new List<Toutput>();
foreach (Tinput obj in arrSourceObjects)
{
list.Add(Convert<Tinput, Toutput>(obj));
}
return list;
}
return null;
}
public static Toutput Convert<Tinput, Toutput>(Tinput sourceObject) where Toutput : class
{
if (sourceObject == null)
{
return null;
}
Type sourceType = typeof(Tinput);
Type toType = typeof(Toutput);
//若为子类,直接返回源对象
Toutput returnObject = sourceObject as Toutput;
if (returnObject != null)
{
return sourceObject as Toutput;
}
try
{
returnObject = Activator.CreateInstance(toType) as Toutput; //转换后的对象
PropertyInfo[] targetObjProperties = toType.GetProperties(); //目标对象的属性信息
foreach (PropertyInfo objProperty in targetObjProperties)
{
//获取源对象对应属性的值,赋予新对象(当两个属性的类型一致或可转化时赋值)
PropertyInfo sourcePropertyInfo = sourceType.GetProperty(objProperty.Name);
if (sourcePropertyInfo != null && objProperty.PropertyType.IsAssignableFrom(sourcePropertyInfo.PropertyType))
{
object objSourceValue = sourcePropertyInfo.GetValue(sourceObject, null);
objProperty.SetValue(returnObject, objSourceValue, null);
}
}
return returnObject;
}
catch (Exception ex)
{
string strMsg = string.Format("源类型{0}转换成目标类型{1}时失败,失败原因:{2}", sourceType, toType, ex.Message);
throw new ApplicationException(strMsg, ex);
}
}
}
{
public static List<Toutput> ConvertAll<Tinput, Toutput>(List<Tinput> arrSourceObjects) where Toutput : class
{
if (arrSourceObjects != null)
{
List<Toutput> list = new List<Toutput>();
foreach (Tinput obj in arrSourceObjects)
{
list.Add(Convert<Tinput, Toutput>(obj));
}
return list;
}
return null;
}
public static Toutput Convert<Tinput, Toutput>(Tinput sourceObject) where Toutput : class
{
if (sourceObject == null)
{
return null;
}
Type sourceType = typeof(Tinput);
Type toType = typeof(Toutput);
//若为子类,直接返回源对象
Toutput returnObject = sourceObject as Toutput;
if (returnObject != null)
{
return sourceObject as Toutput;
}
try
{
returnObject = Activator.CreateInstance(toType) as Toutput; //转换后的对象
PropertyInfo[] targetObjProperties = toType.GetProperties(); //目标对象的属性信息
foreach (PropertyInfo objProperty in targetObjProperties)
{
//获取源对象对应属性的值,赋予新对象(当两个属性的类型一致或可转化时赋值)
PropertyInfo sourcePropertyInfo = sourceType.GetProperty(objProperty.Name);
if (sourcePropertyInfo != null && objProperty.PropertyType.IsAssignableFrom(sourcePropertyInfo.PropertyType))
{
object objSourceValue = sourcePropertyInfo.GetValue(sourceObject, null);
objProperty.SetValue(returnObject, objSourceValue, null);
}
}
return returnObject;
}
catch (Exception ex)
{
string strMsg = string.Format("源类型{0}转换成目标类型{1}时失败,失败原因:{2}", sourceType, toType, ex.Message);
throw new ApplicationException(strMsg, ex);
}
}
}
0 0
- C#一样格式类型互转
- C# 任意类型数据转JSON格式
- C# API 调用格式和参数类型
- C# RGB格式与HBS格式颜色互转
- 转,别人写的C#大部分类型转换成JSON格式的类,防止自己遗忘
- 【转】C#时间格式
- C#比较两个类型一样的实体类对象的值
- C++ 类型转C#类型
- navigationBar 与 statusBar 格式 一样
- C#的类型转换、字符格式转换及其他
- C#中日期类型数据的转换格式
- C#中任意类型数据转成JSON格式数据输出
- C#中任意类型数据转成JSON格式数据输出
- C#中任意类型数据转成JSON格式数据输出
- c#读取string类型的xml格式的字符串
- C#判断常见类型格式是否正确的类
- C# Directory.GetFiles()获取多个类型格式的文件
- C#支持从自定义日期时间格式到DateTime类型
- notification
- SPI Flash数据移位
- linux命令总结1129
- iOS两个应用程序之间的跳转和传值
- STM_HAL: assert_param 与 assert_failed函数
- C#一样格式类型互转
- oracle数据库体系结构
- butter高通滤波
- 磁条磁道介绍
- Please ensure that adb is correctly located at .... and can be executed
- 1 - 什么是机器学习?怎么用?
- 三维数组与指针
- Java入门-C++基础
- 创建OS X 10.11U盘安装盘