我正在使用Newtonsoft JSON库来创建List<dynamic>
个对象:
List<dynamic> dynamics = Newtonsoft.Json.Linq.JArray.Parse(response.Content);
我想实现将每个dynamic
对象解析为AnonymousType
。所以为了实现这一点,我正在使用dynamic feature of AutoMapper。
问题是此AutoMapper功能基于基于PropertyName的约定。因此映射了具有相同名称的每个属性。
我突然出现的问题是json密钥comment
可能类似于:Comment
,COMMENT
,CoMMeNt
等等。因此,如果AnonymousType具有属性comment
,则AutoMapper将不会映射此属性。所以,anonymous.comment is not equals to dynamic.CoMMeNt
。
尽管如此,匿名类型可能具有绝对不同的命名属性。所以,anonymous.field is not equals to dynamic.comment
。
我想按订单映射每个物业。因此,anotnymous类型的第一个属性被映射到动态的第一个属性。
我怎么能得到它?
答案 0 :(得分:0)
创建一个新的基类型,派生自DynamicObject
,用于处理TryGetMember
或类似方法中所需的命名约定。然后,当 AutoMapper 在运行时调用您的对象时,您可以处理命名问题:
public bool TryGetMember(GetMemberBinder binder, out object result)
{
string name = binder.Name.ToLower();
if (name == "comment")
{
// save comment
}
return false;
}