Silverlight动态加载XAP,利用反射技术呈现

Silverlight动态加载XAP,利用反射技术呈现,第1张

概述1. 首先通过WebClient下载Xap包。         /// <summary>         /// 下载应用         /// </summary>         /// <param name="name"></param>         private void DownloadApp(string name)         {             // 判断是

1. 首先通过WebClIEnt下载Xap包。

        /// <summary>
        /// 下载应用
        /// </summary>
        /// <param name="name"></param>
        private voID DownloadApp(string name)
        {
            // 判断是否已下载

            WebClIEnt wc = new WebClIEnt();
            wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
            wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
            wc.OpenReadAsync(new Uri(name,UriKind.relative),name);
        }

2. 处理 OpenReadCompleted 事件。

        /// <summary>
        /// 设置异步下载完成中并引发 OpenReadCompleted 事件时所要执行的事件处理程序。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        voID wc_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e)
        {
            // 隐藏下载进度条

            if (e.Error == null && e.Cancelled == false)
            {
                // 在此要将下载的数据流转换成一个组件并加载到目前的AppDomain中。
                // 将下载的数据流转换成一个组件。
                Assembly assembly = LoadAssemblyFromXap(e.UserState.ToString(),e.Result);

                // 创建 Silverlight 类库组件DLL中的用户控件类的实例。
                UserControl page = (UserControl)assembly.CreateInstance("");

                // 将实例添加到 Canvas 对象中,并显示。
                canvasMain.Children.Add(page);
            }
        }

 

其中 LoadAssemblyFromXap用于将流转换成组件。

        /// <summary>
        /// 将数据流转换成组件
        /// </summary>
        /// <param name="relativeUriString"></param>
        /// <param name="xapPackageStream"></param>
        /// <returns></returns>
        private Assembly LoadAssemblyFromXap(string relativeUriString,Stream xapPackageStream)
        {
            Uri uri = new Uri(relativeUriString,UriKind.relative);
            StreamResourceInfo xapPackageSri = new StreamResourceInfo(xapPackageStream,null);
            StreamResourceInfo assemblySri = Application.GetResourceStream(xapPackageSri,uri);

            AssemblyPart assemblyPart = new AssemblyPart();             Assembly assembly = assemblyPart.Load(assemblySri.Stream);             return assembly;         }

总结

以上是内存溢出为你收集整理的Silverlight动态加载XAP,利用反射技术呈现全部内容,希望文章能够帮你解决Silverlight动态加载XAP,利用反射技术呈现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存