Silverlight - 支持动态代码?

时间:2009-07-21 15:07:56

标签: silverlight dynamic code-generation

我试图了解一下Silverlight中服务器端代码与客户端代码之间的关系。

我预计你不能简单地'评估'一个字符串并拥有新的代码,但你可以在服务器端加载一个程序集并将其包含在发送给客户端的Silverlight代码中吗?

对于Silverlight来说,我是一个完整的'noob',所以我可能完全误解它是如何工作的,所以任何澄清都会受到赞赏。

[编辑]

只是让我更加了解我正在尝试做什么,我想编写一些简单的代码(如仅在逻辑中),在服务器上编译它然后将其发送回客户端以便它可以在客户端使用。我不确定这是DLL还是可能......

2 个答案:

答案 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,但我可以查看。