如何使用传统的客户端/服务器设计将公共代码集中在Silverlight中?

时间:2010-06-08 08:12:23

标签: c# silverlight silverlight-4.0 client-server

设置:

我有一个silverlight应用程序和一个webservice都希望使用相同的代码。

这是我的问题:

  • 如果正常的dll是银光 应用说它不能 参考它。
  • 如果我制作Silverlight dll的话 Web服务无法引用它。

我不喜欢重复代码如何在Silverlight应用和我的网络服务之间共享代码?

2 个答案:

答案 0 :(得分:1)

您可以采取多种方法来避免重复。

最有趣的方法是使用两个针对.NET Framework的不同项目,另一个针对Silverlight。因此,它们的引用指向适当的程序集集,Silverlight项目定义#SILVERLIGHT条件编译符号。但是,它们共享同一组代码文件,即一个将使用链接文件。您可以使用条件编译来切换需要以不同方式完成的部分。

WCF RIA Services还提供了一种机制,您可以将代码放在服务器端项目中的* .shared.cs文件中,这些文件将自动复制到客户端项目中的“Generated_Code”文件夹中。

有一种方法可以在Silverlight 4和.NET 4.0之间共享一组代码和一个输出dll。但是,您需要将引用限制为一组非常窄的文件。见Sharing Silverlight Assemblies with .NET Apps

答案 1 :(得分:-1)

制作两个dll项目,一个silverlight dll和一个普通dll。让他们都使用生成静态库的公共代码引用第三个项目。公共代码作为静态库无论如何都是好的,因为你可以将它与任何类型的项目链接起来。