1

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

有可能吗?怎么做?

4

2 回答 2

1

正确的做法是为您的服务公开一个模式定义以供客户端使用并从中生成强类型类定义,或者向客户端提供带有 DTO 合同定义(类/接口定义)的 DLL。

如果您没有选择这些方法(没有模式和没有带接口的 dll)但仍想生成类定义,则可以以不正确的方式从服务的示例数据生成 .cs 类定义(调用服务对次并拦截响应或使用一些http客户端)。但是,这种方法并不能保证您将获得准确或/和完整的生成。基本上你可以从:

XML->XSD->C# cs 类文件(甚至直接将 XML 转为 C# cs 文件)或JSON->C# 类文件

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

于 2013-02-12T07:22:27.760 回答
0

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

dynamic您可以使用 JSON.Net反序列化为对象

使用 Json.net 将 json 对象反序列化为动态对象

于 2013-02-12T06:46:55.157 回答