是否可以通过反序列化某些协议来生成C#类?

时间:2013-02-12 06:43:45

标签: c# wcf serialization

我需要根据反序列化序列化类生成或定义新类。所以我想将类定义从服务器转移到客户端以便稍后访问它的属性。

是否可能以及如何?

2 个答案:

答案 0 :(得分:1)

正确的方法这样做就是要为客户提供schema definition for your service消费&从中生成强类型类定义,或者向客户端提供带有DTO合约定义(类/接口定义)的DLL。

如果您选择这两种方法(没有架构和没有接口的dll),但仍然如此 想要生成类定义,您可以以不正确的方式从服务的示例数据生成.cs类定义(多次调用服务并拦截响应或使用一些{{3 }})。但是,这种方法并不能保证您获得准确或完整的生成。基本上你可以从:

http client cs类文件(甚至是XML->XSD->C#)或XML to C# cs file directly

将对象反序列化为动态,尤其是当您不拥有服务器和服务器时客户端代码几乎是你能做的最糟糕的事情。这样你没有将类定义转移到客户端。事实上,对动态对象进行反序列化实际上根本没有反序列化,它为您提供了一个字符串字典,其中包含语法糖,可以在运行时将它们作为属性访问,而不是编译时支持,可以等同于灾难。总之,除非你拥有所有的代码,否则不要这样做(不是说这是一个好主意,但也许你可以通过某种方式获得)

答案 1 :(得分:0)

传输属性定义和数据本身的一种可移植方法是使用JSON序列化程序。

您可以使用JSON.Net

反序列化为dynamic对象

Deserialize json object into dynamic object using Json.net