我试图了解一下Silverlight中服务器端代码与客户端代码之间的关系。
我预计你不能简单地'评估'一个字符串并拥有新的代码,但你可以在服务器端加载一个程序集并将其包含在发送给客户端的Silverlight代码中吗?
对于Silverlight来说,我是一个完整的'noob',所以我可能完全误解它是如何工作的,所以任何澄清都会受到赞赏。
[编辑]
只是让我更加了解我正在尝试做什么,我想编写一些简单的代码(如仅在逻辑中),在服务器上编译它然后将其发送回客户端以便它可以在客户端使用。我不确定这是DLL还是可能......
答案 0 :(得分:2)
这个家伙有一个可以下载的样本,可以完全按照你想要的那样:
http://www.nokola.com/trycsharp/HowToBuild.aspx
它基本上使用Microsoft.CSharp.CSharpCodeProvider来编译代码,但使用Sivlerlight Dll以使其正常工作。
你甚至可以编译一个完整的Silverlight页面(xaml& cs),但你必须使用msbuild来完成它,因为它需要做一个预编译传递来生成连接Xaml对象的.g.cs文件到C#代码。
这两种方法都只是服务器端。
答案 1 :(得分:0)
您是否有兴趣在Silverlight平台上运行动态语言?如果是这样,你很幸运:
http://silverlight.net/learn/dynamiclanguages.aspx/
另一方面,C#中的动态代码生成将被视为一种反射,而Silverlight中目前无法实现(请参阅完整.NET Framework中的System.Reflection.Emit以进行比较)。
编辑1:虽然你仍然可能想要考虑它,但这听起来不是问题。这是一篇很好的文章,介绍如何在服务器上动态生成Xaml,将其打包并将其返回给客户端:
http://msdn.microsoft.com/en-us/magazine/2009.01.cuttingedge.aspx
仍然缺少的等式部分是如何在服务器上生成SL dll(可能使用Reflection.Emit命名空间)。这些dll可以像文章中提到的那样添加到Xap中并发送回客户端。
这是从服务器动态加载dll到SL的另一种方法: http://www.shinedraw.com/data-handling/flash-vs-silverlight-loading-external-assemblylibrary-dynamically/
现在我不确定你是否可以动态生成SL dll,但我可以查看。