gpt4 book ai didi

c# - "Deep"转换对象

转载 作者:行者123 更新时间:2023-11-30 13:58:28 24 4
gpt4 key购买 nike

我有以下方法可用于将对象转换为给定类型:

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)}
};
}

我似乎没有找到一种方法来找到利用这些信息来转换复杂属性的方法。我该如何着手使用上述映射来转换复杂的属性?

问题的症结在于:如果我只有一个Type对象,如何调用new

最佳答案

Activator.CreateInstance(type),这里是 msdn 的链接对于那些认为我的回答不够“详尽”的人(得到了 3 个反对票,作为一个简短的必要答案)...

你有没有看过AutoMapper

关于c# - "Deep"转换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16763886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com