我有一个WP7项目,它将在Azure中调用REST Web服务(MVC4 WebApi)。
我的WP7项目有模型,它序列化为JSON,然后发送到Web服务。
Web服务对从WP7发送的数据进行反序列化,并在将模型保存到Azure表存储之前再次实例化模型。
如何在项目之间共享Model类?现在我只是复制cs文件,如果我对模型进行更改,我必须更新两个集合。我希望能从两个项目中引用一个简单的类库项目,但WP7无法处理。
我该怎么办?
谢谢!
答案 0 :(得分:2)
这个问题有很多解决方案:
您可以使用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项目as a link中的属性的文件。
手动创建一个DTO(或任何你称之为)的类,并使用类似AutoMapper的东西在DTO和TableStorage实体之间进行映射。将DTO存储在portable library中,以便各种项目都可以使用它。在我看来,这是最好的解决方案,因为您不希望将您的实体完全暴露给“外部世界”。一个例子是用户列表。您不希望返回所有字段,包括密码,哈希...和其他敏感信息。最好有一个单独的类,它只包含你想在外部公开的信息。