我有一个文件上传逻辑和一个非常具体的业务规则。根据它们,我应该将我的文件模型解析为行,其类似于“标题:{processed field1},{processed field2},{processed field3},{processed field4},{processed field5},{processed field6},{processed field7对于19个参数,{,field field8}等等“它最初是自定义序列化。
我也应该有可能将这一行解析回object。那么,问题是对这些工作人员进行编码的常见想法是什么?
因为现在将模型解析为行我只使用带有许多选项的string.format,并且为了解析行到模型,我将行拆分为','然后使用部分信息进行操作将其分配给模型字段。但是在这个实现中有很多低级别的工作,一些硬编码的位置以及许多看起来不太适合我的东西。
答案 0 :(得分:2)
这里不会涉及任何魔法,特别是因为您将对象序列化为非标准格式。你可能不得不忍受“丑陋”的代码。
答案 1 :(得分:1)
您应该将序列化/反序列化放在自定义序列化程序中。您可以遵循.net库中其他序列化程序相同的模式,并实现IFormatter
interface。这将为您提供一个通用接口,您可以使用该接口流入和流出文件(或任何流):
using (var fileStream = new FileStream(fileName, FileMode.Create))
{
var formatter = new CustomFormatter();
formatter.Serialize(fileStream, objectToSerialize);
}
using (var fileStream = new FileStream(fileName, FileMode.Read))
{
var formatter = new CustomFormatter();
return (CustomType)formatter.DeSerialize(fileStream);
}
您可以在此下载中看到custom formatter的示例