我需要基于反序列化序列化类生成或定义新类。所以我想将类定义从服务器传输到客户端,以便稍后访问它的属性。
有可能吗?怎么做?
正确的做法是为您的服务公开一个模式定义以供客户端使用并从中生成强类型类定义,或者向客户端提供带有 DTO 合同定义(类/接口定义)的 DLL。
如果您没有选择这些方法(没有模式和没有带接口的 dll)但仍想生成类定义,则可以以不正确的方式从服务的示例数据生成 .cs 类定义(调用服务对次并拦截响应或使用一些http客户端)。但是,这种方法并不能保证您将获得准确或/和完整的生成。基本上你可以从:
XML->XSD->C# cs 类文件(甚至直接将 XML 转为 C# cs 文件)或JSON->C# 类文件
并且将对象反序列化为动态对象,尤其是当您不拥有服务器和客户端代码时,这几乎是您能做的最糟糕的事情。这样,您就不会将类定义转移到 client。反序列化到动态对象实际上根本没有反序列化,事实上,它为您提供了一个带有语法糖的字符串字典,可以在运行时将它们作为属性访问,而没有编译时支持,这可能等于一场灾难。简而言之,除非您拥有所有代码,否则不要这样做(这也不是一个好主意,但也许您可以通过某种方式获得)