这个问题与上一篇文章非常相似: convert-object-to-url-in-c-sharp
我正在尝试将对象转换为URL字符串。
例如:
public class example {
public string property1;
public int property2;
public double property3;
}
然后字符串会像
一样出现property1 =值安培; property2 =值安培; property3 =值
理想情况下,我不想用花哨的循环和字符串操作来做到这一点。 (不是懒惰,只是高效)。
对于集合类库,最终目标是使用Win Forms应用程序,连接到不接收JSON对象的第三方网站。我想远离使用MVC框架的东西。
答案 0 :(得分:6)
尝试以下方法:
var obj = new example { ... };
var result = new List<string>();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(obj))
{
result.Add(property.Name + "=" + property.GetValue(obj));
}
return string.Join("&", result);
答案 1 :(得分:2)
你可以使用反射和一些linq:
void Main()
{
var e = new example
{
property1 = "a",
property2 = 42,
property3 = 100
};
string s = string.Join("&", e.GetType().GetProperties().Select(p => p.Name + "=" + p.GetValue(e, null)));
// s= property1=a&property2=42&property3=100
}
public class example {
public string property1 {get;set;}
public int property2 {get;set;}
public double property3 {get;set;}
}
答案 2 :(得分:1)
为什么不直接这样做呢?
向Example
类添加扩展方法(btw类和属性的标准.NET命名约定是使用Pascal大小写):
public string ToUrlString(this Example example)
{
return "property1=" + HttpServerUtility.UrlEncode(example.Property1)
+ "&property2=" + HttpServerUtility.UrlEncode(example.Property2.ToString())
+ "&property3=" + HttpServerUtility.UrlEncode(example.Property3.ToString());
}