对象到URL字符串

时间:2013-12-23 14:13:29

标签: c# .net winforms class

这个问题与上一篇文章非常相似: 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框架的东西。

3 个答案:

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