AutoMapper配置属性按顺序(匿名类型和动态)

时间:2016-04-26 10:18:32

标签: c# json.net automapper

我正在使用Newtonsoft JSON库来创建List<dynamic>个对象:

List<dynamic> dynamics = Newtonsoft.Json.Linq.JArray.Parse(response.Content);

我想实现将每个dynamic对象解析为AnonymousType。所以为了实现这一点,我正在使用dynamic feature of AutoMapper

问题是此AutoMapper功能基于基于PropertyName的约定。因此映射了具有相同名称的每个属性。

我突然出现的问题是json密钥comment可能类似于:CommentCOMMENTCoMMeNt等等。因此,如果AnonymousType具有属性comment,则AutoMapper将不会映射此属性。所以,anonymous.comment is not equals to dynamic.CoMMeNt

尽管如此,匿名类型可能具有绝对不同的命名属性。所以,anonymous.field is not equals to dynamic.comment

我想按订单映射每个物业。因此,anotnymous类型的第一个属性被映射到动态的第一个属性。

我怎么能得到它?

1 个答案:

答案 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;
}