【问题标题】:Silverlight - Support For Dynamic Code?Silverlight - 支持动态代码?
【发布时间】:2009-07-21 15:07:55
【问题描述】:

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

我预计您不能简单地“评估”一个字符串并拥有新代码,但是您能否在服务器端加载一个程序集并将其包含在发送到客户端的 Silverlight 代码中?

对于 Silverlight,我完全是个“菜鸟”,所以我可能完全误解了它的工作原理,因此我们将不胜感激。

[编辑]

只是为了让我尝试做的事情更有意义,我想编写一些简单的代码(仅在逻辑中),在服务器上编译它,然后将其发送回客户端,所以它可以在客户端使用。我不确定这是否是一个 DLL,甚至可能......

【问题讨论】:

  • 你的意思是“你能在服务器端生成一个程序集吗?”支持动态加载预构建的程序集,并且易于完成。
  • 您可以将它们发送到服务器并将它们加载到 Silverlight 客户端应用程序中?
  • 我想我只是对您问题中的“负载”一词感到困惑。听起来您想在 SL 中拼凑一串代码,将其发送到服务器,让服务器生成一个 dll,然后将其加载回您的 SL 应用程序。是这样吗?如果是这样,我认为“您能否在服务器端生成程序集”可能是一种更清晰的表达方式。如果问题纯粹是关于将已编译的 dll 动态加载到 SL 中,那么它是一个不同的(并且更容易;)过程。
  • 是的,你说得比我清楚得多:) - 在服务器端生成一个程序集,然后将其动态添加到正在运行的 Silverlight 应用程序中。

标签: silverlight dynamic code-generation


【解决方案1】:

这个家伙有一个可下载的工作示例,完全符合您的要求:

http://www.nokola.com/trycsharp/HowToBuild.aspx

它基本上使用 Microsoft.CSharp.CSharpCodeProvider 来编译代码,但使用 Sivlerlight Dlls 所以它可以正常工作。

您甚至可以编译整个 silverlight 页面(xaml 和 cs),但您必须使用 msbuild 来完成,因为它需要执行预编译传递以生成将 Xaml 对象连接到的 .g.cs 文件C# 代码。

这两种方法都只是服务器端的。

【讨论】:

    【解决方案2】:

    您对在 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,但我可以检查一下。

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      相关资源
      最近更新 更多