Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 用于将对象解析为特定模型的设计模式,反之亦然_Oop_Design Patterns_Serialization - Fatal编程技术网

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

Oop 用于将对象解析为特定模型的设计模式,反之亦然,oop,design-patterns,serialization,Oop,Design Patterns,Serialization,我有一个文件上传逻辑和一个非常具体的业务规则。根据它们,我应该将我的文件模型解析为行,它看起来像“头:{processed field1},{processed field2},{processed field3},{processed field4},{processed field5},{processed field6},{processed field7},{processed field8}等19个参数”,这是最初的自定义序列化 我也应该有可能将这一行解析回object。所以,问题是,

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

我也应该有可能将这一行解析回object。所以,问题是,对这些员工进行编码的共同想法是什么


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

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

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

使用(var fileStream=newfilestream(fileName,FileMode.Create))
{
var formatter=新的CustomFormatter();
序列化(文件流、对象序列化);
}
使用(var fileStream=newfilestream(fileName,FileMode.Read))
{
var formatter=新的CustomFormatter();
返回(自定义类型)格式化程序。反序列化(文件流);
}

您可以在此下载中看到一个示例

是的,看起来是这样的。我不喜欢它——这就是为什么我要问。