C# 将对象序列化为以符号分隔的名称和值
拥有这些数据:C# 将对象序列化为以符号分隔的名称和值,c#,C#,拥有这些数据: class User { public string Name {get; set;} public string SurrName {get; set;} } class Book { public int Id {get; set;} public string Title {get; set;} } var user = getSampleUser(); var book = getSampleBook(); 我想创建一个字符串,它将把
class User
{
public string Name {get; set;}
public string SurrName {get; set;}
}
class Book
{
public int Id {get; set;}
public string Title {get; set;}
}
var user = getSampleUser();
var book = getSampleBook();
我想创建一个字符串,它将把序列化对象约束为&name=value
var userContent = user.ToRequestContent(); // "&Name=Adam&Surrname=Smith";
var bookContent = book.ToRequestContent(); // "&Id=5&Title=7";
我该怎么做呢?为什么不:
class User
{
public string Name {get; set;}
public string SurrName {get; set;}
public string ToRequestContent()
{
return "&Name="+Name+"&Surrname="+SurrName;
}
}
class Book
{
public int Id {get; set;}
public string Title {get; set;}
public string ToRequestContent()
{
return "&Id="+Id+"&Title="+Title;
}
}
为什么不只是:
class User
{
public string Name {get; set;}
public string SurrName {get; set;}
public string ToRequestContent()
{
return "&Name="+Name+"&Surrname="+SurrName;
}
}
class Book
{
public int Id {get; set;}
public string Title {get; set;}
public string ToRequestContent()
{
return "&Id="+Id+"&Title="+Title;
}
}
您可以尝试将
linq
与reflation一起使用,以获取属性信息和值
我会写一个扩展方法
public static class ExtenstionArray
{
public static string ToRequestContent<T>(this T model) {
var list = model.GetType().GetProperties()
.Select(x => new
{
val = x.GetValue(model).ToString(),
name = x.Name
})
.Select(z => string.Join("=", z.name, z.val));
return "&"+ string.Join("&", list);
}
}
结果
&Name=test&SurrName=aa
&Id=134&Title=aass
您可以尝试将
linq
与reflation一起使用,以获取属性信息和值
我会写一个扩展方法
public static class ExtenstionArray
{
public static string ToRequestContent<T>(this T model) {
var list = model.GetType().GetProperties()
.Select(x => new
{
val = x.GetValue(model).ToString(),
name = x.Name
})
.Select(z => string.Join("=", z.name, z.val));
return "&"+ string.Join("&", list);
}
}
结果
&Name=test&SurrName=aa
&Id=134&Title=aass
可能重复的如果只有很少的属性,则可以根据需要重写ToString方法和格式化字符串。可能重复的如果只有很少的属性,则可以根据需要重写ToString方法和格式化字符串。小心-如果OP希望生成查询字符串,您需要按照中的建议对属性值进行编码-如果OP希望生成查询字符串,则需要按照中的建议对属性值进行编码