【发布时间】:2020-02-21 12:14:01
【问题描述】:
我有一个类,其中包含一个类型是另一个类的属性。例如:
public class Outer
{
public string SomeStringProperty { get; set; }
public Inner SomeClassProperty { get; set; }
}
public class Inner
{
public string InnerProperty1 { get; set; }
public string InnerProperty2 { get; set; }
}
我想将Outer 类的实例转换为URL 查询字符串,并包含嵌套Inner 类的属性。
例如,给定Outer的实例,如:
Outer toSerialise = new Outer
{
SomeStringProperty = "MyOuterValue",
SomeClassProperty = new Inner
{
InnerProperty1 = "MyInnerValue1",
InnerProperty2 = "MyInnerValue2"
}
};
我想把它转换成一个字符串:
&SomeStringProperty=MyOuterValue&InnerProperty1=MyInnerValue1&InnerProperty2=MyInnerValue2
我怎样才能做到这一点?
我找到了类似问题的答案,但它们似乎不支持嵌套类。
【问题讨论】:
-
提示:当您拥有
PropertyInfo时,请检查PropertyType...如果它不是String也不是IsPrimitive,则递归调用相同的函数来累积属性值. -
@AdrianoRepetti 好点,谢谢!我想知道使用
string和IsPrimitive的可靠性如何 - 看起来 DateTime 是 not 原始的,但应该属于这一类。不知道还有没有这样的……? -
要支持更多数据类型,您必须处理每一种数据类型(繁琐)或检查对象是否实现
IConvertible(用于转换为字符串),但仍然存在一些边缘情况。
标签: c# serialization query-string