[英]is there any api provided by dot net platform to convert a string or bytres array into user defined object?
假设我有输入数组字节 A[50];
我在数组中放置了三个不同的数据类型值,如下所示
现在我已经定义了一个如下的架构
<schemaforparsing>
<field>
<name>fieldname1</name>
<type>string</type>
<length>42</length>
</field>
<field>
<name>fieldname2</name>
<type>long</type>
<length>4</length>
</field>
<field>
<name>fieldname3</name>
<type>float</type>
<length>4</length>
</field>
</schemaforparsing>
我想将此字节数组解析为用户定义的对象。 用户定义对象的类应该从指定的模式生成。像在这种情况下类将如下
classGenerated
{
String fieldname1[42];
long fieldname2;
float fiedlname3;
}
所以基本上我想要一个组件,它将接受模式的输入并基于该模式,在解析数组中的二进制数据后,它将生成与事务模式相关的类对象。
dot net 3.5平台有提供这样的组件吗?
好吧,听起来您基本上想要某种形式的二进制序列化。
普通的内置 .NET 序列化适用于现有的类而不是模板,但我个人并不十分热衷于它。
如果你想要模板生成的类,我可以推荐协议缓冲区——可移植、紧凑、高效的序列化/反序列化。 有两个主要的 C# 端口 -我自己的和Marc Gravell 的一个。 当然,还有其他二进制序列化格式...... protobuf 只是我最熟悉的一种。
(已编辑)除了使用自己的“架构”的常用二进制序列化程序之外,框架中没有这样的组件。 实现自己可能并不难。 我想模式告诉你这样的事情:
应该不会太难。
如果没有上下文,这是一个很难回答的问题 - 您想用“用户定义”对象做什么?
如果您需要能够在运行时使用动态字段创建对象,一个可能的解决方案是等到 c# 4 的dynamic
类型并反序列化为ExpandoObject
,请参阅ExpandoObject 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.