如何在Silverlight和.Net 4项目之间共享具有DataContract属性的实体C#类

时间:2011-05-21 14:27:48

标签: silverlight wcf code-reuse datacontract

我想构建一个由Silverlight应用程序使用的WCF REST服务,并且想要检查是否有一种在web wcf项目和Silverlight项目之间共享实体类的好方法(它们是两种不同的CLR类型) 。两个项目的代码基本相同:使用DataContract属性修饰的实体类和具有DataMember属性的属性。

1 个答案:

答案 0 :(得分:1)

我通常所做的并且工作得很好的是在其中一个项目(例如,Web项目)和SL项目中将数据合同添加为链接(右 - 单击项目,添加现有项目,选择文件,然后选择下拉菜单并选择“添加为链接”,而不是单击“添加”按钮。这样,两个项目之间共享类型。

请注意,这甚至可以用于服务契约,但由于SL不支持同步操作调用,我通常使用一些编译器指令来共享服务契约,如下例所示。

[ServiceContract]
public interface ITest
{
#if SILVERLIGHT
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginAdd(int x, int y, AsyncCallback callback, object state);
    int EndAdd(IAsyncResult asyncResult);
#else
    int Add(int x, int y);
#endif
}