我有以下方法可用于将对象转换为给定类型:
public static TTarget Convert<TTarget>(object source) where TTarget : new()
{
var target = new TTarget();
Type targetType = typeof (TTarget);
foreach (PropertyInfo sourceProperty in source.GetType().GetProperties())
{
if (!sourceProperty.CanRead || (sourceProperty.GetIndexParameters().Length > 0))
continue;
PropertyInfo targetProperty = targetType.GetProperty(sourceProperty.Name);
if ((targetProperty != null) && (targetProperty.CanWrite))
targetProperty.SetValue(target, sourceProperty.GetValue(source, null), null);
}
return target;
}
它适用于属性为值类型等的简单类,但复杂的属性需要映射到另一个类,目前还不太清楚如何去做。如果我将映射存储到静态属性中:
private static Dictionary<Type, Type> Mappings;
static TypeConverter()
{
Mappings = new Dictionary<Type, Type>
{
{typeof (DbSpace), typeof (DmsSpace)},
{typeof (DbDirectory), typeof (DmsDirectory)},
{typeof (DbFile), typeof (DmsFile)}
};
}
我似乎没有找到一种方法来利用这些信息来转换复杂的属性。如何使用上述映射来转换复杂的属性?
问题的症结在于:new
我只有一个Type
对象怎么调用?