1 回答
TA贡献1826条经验 获得超6个赞
没有内置的“纯文本”序列化程序将对象属性值序列化为行分隔文本。大多数时候,当您想要将对象保存为文本时,您只需编写代码即可。
例子:
var x = new ResponseGradeDto{
Id = Guid.NewGuid(),
Name = "Foo",
Code = "Cde",
Information = "No info"
};
using (var writer = new StreamWriter(@"C:\temp\log.txt"))
{
writer.WriteLine(x.Name);
writer.WriteLine(x.Code);
writer.WriteLine(x.Information);
}
然而,更通用的方法是使用反射来获取对象的所有引用属性:
var properties = typeof(ResponseGradeDto).GetProperties();
然后将属性转储到文件中就很简单了(注意我使用了x上面代码中定义的对象):
File.WriteAllLines(@"C:\temp\attr.txt", properties.Select(p => p.GetValue(x).ToString()));
如果您愿意,可以使用带有上述反射解决方案的属性来过滤掉想要的/不需要的属性。在这里,我重用了您在示例中使用的“Xml 属性”,您可以编写自己的属性:
var properties = typeof(ResponseGradeDto).GetProperties().Where(
prop => Attribute.IsDefined(prop, typeof(XmlElementAttribute))
&& !Attribute.IsDefined(prop, typeof(XmlIgnoreAttribute))
);
希望这可以帮助!
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报