C#中是否有任何类型的文本序列化程序,能够序列化/反序列化这个缩短的示例。。。
public class Record
{
// Letters 1-4
public string Identifier { get; set; }
// Letters 5-12
public string ProcessAbbreviation { get; set; }
// Letters 13-16
public string Name { get; set; }
}
插入这根绳子?
AAAABBBB CCCC
请注意,如果属性没有所需的长度,字符串必须包含空格。
尽管必须可以将其序列化/反序列化为其他方向,例如将字符串序列化为对象。
我已经试着找到一些符合我要求的东西,但我什么都找不到。
我非常感谢任何形式的帮助,干杯!:(
不会有现有的库来做这件事,但编写自己的序列化和去序列化非常容易:
public class Record
{
// Letters 1-4
public string Identifier { get; set; }
// Letters 5-12
public string ProcessAbbreviation { get; set; }
// Letters 13-16
public string Name { get; set; }
public string Serialize()
{
return $"{Identifier, -4}{ProcessAbbreviation, -8}{Name, -4}";
}
public static Record Deserialize(string input)
{
if (input is not { Length: 16 })
throw new ArgumentException("input must be 16 characters long");
return new Record
{
Identifier = input.Substring( 0, 4).Trim(),
ProcessAbbreviation = input.Substring( 4, 8).Trim(),
Name = input.Substring(12, 4).Trim()
};
}
}
测试代码:
public static void Main()
{
var rec = new Record { Identifier = "AAAA", ProcessAbbreviation = "BBBB", Name = "CCCC" };
var serialised = rec.Serialize();
Console.WriteLine("|" + serialised + "|");
var r = Record.Deserialize(serialised);
Console.WriteLine($"|{r.Identifier}|{r.ProcessAbbreviation}|{r.Name}|");
}
在DotNetFiddle 上试用