有谁知道怎么做?我在asp.net中构建了一个后端c#类,但是想要访问这些相同的类而不用在silverlight中重新创建它们。这有可能吗?
答案 0 :(得分:4)
您可以通过将cs文件添加到项目AS LINK来重复使用它们。右键单击项目并选择Add Existing ...浏览到您的文件,然后在打开按钮中,使用右侧的下拉箭头选择Add As Link。您将看到添加到项目中的文件,其中包含一个图标,其上覆盖有小的Windows快捷方式图标。
请记住 - ASP.Net在.Net运行时运行。 Silverlight在CoreCLR(Silverlight运行时)上运行。并非在oone中编译的所有内容都将在另一个中编译...
要稍微分开一点,#if指令可以提供帮助,您也可以使用部分类和部分方法(添加仅在服务器或客户端上运行的内容。)
答案 1 :(得分:2)
RIA Services绝对是在ASP.Net和Silverlight之间共享代码的方式。
除了前面提到的域服务模型之外,它还允许您通过简单地将“共享”插入文件名来在web-app和Silverlight之间共享单个文件。例如“MyClass.shared.cs”。
RIA服务花了很长时间才能达成协议(并且有很好的教程)。 Try this one
答案 2 :(得分:1)
嗯,ASP.NET 本身不会起作用(与许多完整的库一样),但我假设你只是指本地域模型等。
IIRC你可以尝试简单地引用它,但它可能会生成警告信息。当然,您需要格外小心,不要使用其他平台不支持的任何内容......IMO,这里更好的选择是创建第二个包含相同.cs文件的csproj(或使用通配符/深包含作弊)。并建立两者。相同的C#,不同的dll /平台。
发现您需要非常小使用#if
指令并不罕见。
答案 3 :(得分:1)
WCF RIA Services可以帮助您解决问题。 Silverlight不使用与ASP.Net相同的运行时,并且您无法直接在客户端和服务器端共享包含模型类的程序集。要解决这个问题,WCF RIA Services将根据服务器端的模型类在客户端透明地生成类。显然,WCF RIA Services还允许您使用Web服务创建,读取,更新和删除这些类的对象。
MSDN提供了有关WCF RIA Services Client Code Generation的更具体信息。