2

我有一个文件上传逻辑和一个非常具体的业务规则。根据他们,我应该将我的文件模型解析为行,它看起来像“Header:{processed field1},{processed field2},{processed field3},{processed field4},{processed field5},{processed field6},{processed field7 },{processed field8} 等 19 个参数”它最初是自定义序列化。

而且我也应该有可能将此行解析回对象。那么,问题是编码这些员工的常见想法是什么?

因为现在为了将模型解析为行,我只使用带有许多选项的 string.format,并且为了将行解析为模型,我将行拆分为“,”,然后使用部分信息进行操作,将其分配给模型字段。但是在这个实现中,有很多低级的工作,一些硬编码的位置,还有很多对我来说不好看的东西。

4

2 回答 2

2

这里不会涉及任何魔法,特别是因为您正在将对象序列化为非标准格式。你可能不得不忍受“丑陋”的代码。

于 2012-04-24T17:35:41.067 回答
1

您应该将序列化/反序列化放在自定义序列化程序中。您可以遵循与 .net 库中的其他序列化程序相同的模式并实现IFormatter 接口。这将为您提供一个通用接口,您可以使用该接口在文件(或任何流)之间进行流式传输:

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);
}

您可以在此下载中查看自定义格式化程序的示例

于 2012-04-24T19:56:25.990 回答