我有一个 WP7 项目,它将调用 Azure 中的 REST Web 服务(MVC4 WebApi)。
我的 WP7 项目有模型,它序列化为 JSON,然后发送到 Web 服务。
Web 服务对从 WP7 发送的数据进行反序列化,并在将模型保存到 Azure 表存储之前再次实例化模型。
如何在项目之间共享模型类?现在我只是复制 cs 文件,如果我对模型进行更改,我必须更新这两个文件集。我希望能够从两个项目中引用一个简单的类库项目,但 WP7 无法处理。
我该怎么办?
谢谢!
我有一个 WP7 项目,它将调用 Azure 中的 REST Web 服务(MVC4 WebApi)。
我的 WP7 项目有模型,它序列化为 JSON,然后发送到 Web 服务。
Web 服务对从 WP7 发送的数据进行反序列化,并在将模型保存到 Azure 表存储之前再次实例化模型。
如何在项目之间共享模型类?现在我只是复制 cs 文件,如果我对模型进行更改,我必须更新这两个文件集。我希望能够从两个项目中引用一个简单的类库项目,但 WP7 无法处理。
我该怎么办?
谢谢!
这个问题有很多解决方案:
您可以使用 T4 模板来读取实体并在您的 WP7 项目中生成一个类,该类仅包含对象的属性而不参考表存储细节(如 TableStorageEntity):http ://weblogs.asp.net/cibrax/archive /2009/03/11/code-generation-with-t4-an-entities-to-dto-example.aspx
您可以将实体拆分为 2 个文件,一个具有 TableStorage 特性,如 TableStorageEntity,另一个文件仅包含实体的属性(为此使用部分类)。然后,您可以将仅包含 WP7 项目中的属性的文件添加为链接。
手动创建一个 DTO(或任何你称之为的)类,并使用 AutoMapper 之类的东西在 DTO 和 TableStorage 实体之间进行映射。将 DTO 存储在可移植库中,以便各种项目都可以使用它。在我看来,这是最好的解决方案,因为您不想将您的实体完全暴露给“外部世界”。一个例子是用户列表。您不想返回所有字段,包括密码、哈希...和其他敏感信息。最好有一个单独的类,它只包含您想要在外部公开的信息。