FormUrlEncodedContent可序列化类

时间:2015-10-13 15:29:09

标签: c# serialization attributes urlencode key-value

我想创建一个类,如:

public class Transaction
{
    [SerializeAs("type")]
    public string Type { get; set; }
}

我可以转换为IEnumerable<KeyValuePair<string, string>>以供FormUrlEncodedContent消费(Microsoft.AspNet.WebApi.Client)

我也创建了我的自定义属性:

[AttributeUsage(AttributeTargets.All)]
public class SerializeAs : System.Attribute
{
    public string Name { get; set; }
    public SerializeAs(string name)
    {
        Name = name;
    }
}

并可以使用以下内容将我的班级转换为IEnumerable<KeyValuePair<string, string>>

 public static IEnumerable<KeyValuePair<string, string>> ToDictionary(object myObj)
    {
        return myObj.GetType()
            .GetProperties()
            .Select(pi => new {Name = pi.Name, Value = pi.GetValue(myObj, null).ToString()})
            .Union(
                myObj.GetType()
                    .GetFields()
                    .Select(fi => new {Name = fi.Name, Value = fi.GetValue(myObj).ToString()})
            )
            .ToDictionary(ks => ks.Name, vs => vs.Value);
    }

但是,我不确定如何在[SerializeAs]方法中实现用于ToDictionary的属性功能,我们将非常感谢您的帮助。

0 个答案:

没有答案