用于将对象解析为特定模型的设计模式,反之亦然

时间:2012-04-24 17:33:52

标签: oop design-patterns serialization

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

我也应该有可能将这一行解析回object。那么,问题是对这些工作人员进行编码的常见想法是什么?

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

2 个答案:

答案 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的示例