如何让一个现有的程序集运行在Silverlight环境中
2017-04-04 12:05
218 查看
故事是这样的:我们有一个组件,是一个标准的Class Library,里面有一些代码是实现了某些计算或者业务逻辑。例如下面这样
然后,我们做了一个Silverlight的应用程序,和一个用于运行该程序的网站
我们想让这个按钮,能调用DAL中Customer的PlaceOrder方法。这样的要求很自然不过了吧
我们马上会想到,要在SilverlightApplication中添加对DAL项目的引用。
很不幸,我们居然会遇到一个错误
这个错误提示的意思是说,你只能引用Silverlight项目。
我们先来说一下如何解决这个问题吧,最后会解释具体的原因。
好吧,既然说只能引用Silverlight项目,那么我们就从善如流吧。接下来他们添加一个Silverlight的Class Library
那么,我们要思考一个问题,既然我们在DAL中写好了那些代码,是否可以在这个项目中进行重用呢?
有的童鞋马上会说,把那些cs文件复制过来吧。嗯,脑筋动得还是挺快的,不过。。
下面要出绝招了。我们可以将DAL项目中的那些cs文件链接过来,这样就只要维护一份cs文件了,而不要复制多份。
请注意,这里选择“Add as link”
赶紧编译一下吧。然后,我们在Silverlight Application中添加对这个DAL的引用
然后编写按钮代码如下
看起来还不错,不是吗?
那么,这是为什么呢?这里的根本原因是Silverlight的运行时(CLR)其实是一个独立的版本,它与所有标准的.NET FRAMEWORK版本下面的CLR都不一样。它只能做一部分事情,而不是全部的事情。(上述的DAL是很简单的一个示例,如果涉及到一些复杂操作,添加为link的方式不一定能编译通过)
当然,事实上说起来,真的有必要在Silverlight的程序里面嵌入什么很复杂的程序集吗?我想未必。
尤其是在企业或者商业应用开发的场景下,Silverlight大多是作为一个UI的载体而已,几乎所有的功能(例如与外界资源的交互)都是通过服务来实现的。这里的服务主要指的是WCF服务,当然也不限于此。
然后,我们做了一个Silverlight的应用程序,和一个用于运行该程序的网站
我们想让这个按钮,能调用DAL中Customer的PlaceOrder方法。这样的要求很自然不过了吧
我们马上会想到,要在SilverlightApplication中添加对DAL项目的引用。
很不幸,我们居然会遇到一个错误
这个错误提示的意思是说,你只能引用Silverlight项目。
我们先来说一下如何解决这个问题吧,最后会解释具体的原因。
好吧,既然说只能引用Silverlight项目,那么我们就从善如流吧。接下来他们添加一个Silverlight的Class Library
那么,我们要思考一个问题,既然我们在DAL中写好了那些代码,是否可以在这个项目中进行重用呢?
有的童鞋马上会说,把那些cs文件复制过来吧。嗯,脑筋动得还是挺快的,不过。。
下面要出绝招了。我们可以将DAL项目中的那些cs文件链接过来,这样就只要维护一份cs文件了,而不要复制多份。
请注意,这里选择“Add as link”
赶紧编译一下吧。然后,我们在Silverlight Application中添加对这个DAL的引用
然后编写按钮代码如下
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using DAL; namespace SilverlightApplication { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void btTest_Click(object sender, RoutedEventArgs e) { var customer = new Customer(); MessageBox.Show(customer.PlaceOrder().ToString()); } } }
看起来还不错,不是吗?
那么,这是为什么呢?这里的根本原因是Silverlight的运行时(CLR)其实是一个独立的版本,它与所有标准的.NET FRAMEWORK版本下面的CLR都不一样。它只能做一部分事情,而不是全部的事情。(上述的DAL是很简单的一个示例,如果涉及到一些复杂操作,添加为link的方式不一定能编译通过)
当然,事实上说起来,真的有必要在Silverlight的程序里面嵌入什么很复杂的程序集吗?我想未必。
尤其是在企业或者商业应用开发的场景下,Silverlight大多是作为一个UI的载体而已,几乎所有的功能(例如与外界资源的交互)都是通过服务来实现的。这里的服务主要指的是WCF服务,当然也不限于此。
相关文章推荐
- 如何让一个现有的程序集运行在Silverlight环境中
- 如何让一个现有的程序集运行在Silverlight环境中
- 如何在一个clean的环境下,编译、运行EFL。
- 如何把一个java程序打包成exe文件,运行在没有java环境里
- 如何实现多个线程同步 (2013-11-10 12:07:24)转载▼ 标签: it 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题,Java实现线程同步的方法很多
- 2.2.1 传播行为 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。
- 编写一个可以自行启动的计算机,不需要在现有操作系统环境中运行的程序
- 一个学JAVA的初学者 1:如何设置运行环境
- React-Native初始化环境配置及如何去运行一个helloword工程
- 做完一个小网站的一点经验总结(2): asp.net+access程序运行环境的配置
- 如何在运行时添加表到表单的数据环境
- 如何精确计算出一个算法的CPU运行时间
- 如何使应用程序只运行一个实例
- 11如何精确计算出一个算法的CPU运行时间?
- 如何为自己的Webpart程序集单独指定运行权限
- 如何创建一个自定义帐户来运行 ASP.NET
- 正在学设计模式呵,转载一篇如何保证一个窗体的实例运行
- 如何精确计算出一个算法的CPU运行时间?
- 一个页面在运行时,如何在页面上显示“正在运行页面,请稍候”