我写了一个应用程序,它是一个自定义控制台,允许执行各种命令。命令之一允许数据序列化。输入数据是一个字符串,它是用逗号分隔的值的列表。
我的问题是-如何使序列化数据尽可能紧凑? 序列化格式对我来说并不重要。
这是命令的代码:
using CustomConsole.Common;
using System.IO;
using System.Xml.Serialization;
using System;
namespace Shell_Commander.Commands
{
public class SerializeCommand : ICommand
{
private string _serializeCommandName = "serialize";
public string Name { get { return this._serializeCommandName; } set { _serializeCommandName = value; } }
public string Execute(string parameters)
{
try
{
var splittedParameters = parameters.Split(" ");
var dataToSerialize = splittedParameters[0].Split(",");
var pathTofile = splittedParameters[1].Replace(@"\", @"\\");
XmlSerializer serializer = new XmlSerializer(dataToSerialize.GetType());
using (StreamWriter writer = new StreamWriter(pathTofile))
{
serializer.Serialize(writer, dataToSerialize);
var length = new FileInfo(pathTofile).Length;
Console.WriteLine($"Wrote file to: {pathTofile}");
return length.ToString();
}
}
catch (Exception e)
{
Console.WriteLine(e);
return "0";
}
}
}
}
该命令接受2个参数:
示例-对于“ 1,2,4”输入,将保存以下文件:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>1</string>
<string>2</string>
<string>4</string>
</ArrayOfString>
编辑:
我希望我的命令将来能够对复杂的对象进行序列化,因此将字符串原样写入文件不是解决方案。
我只想使用标准的序列化方法和格式。