我想创建一个类,如:
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
的属性功能,我们将非常感谢您的帮助。