(Siverlight应用程序之间)通过宿主(B屏)New对象,进行的交互消息(反射)

(Siverlight应用程序之间)通过宿主(B屏)New对象,进行的交互消息(反射),第1张

概述         由于最近的项目要实现一机多屏(实际上属于同一个IE,同一个Siverlight程序,通过宿主(B屏)New对象,添加到B屏容器中,并展示B与C屏共同展示),B与C屏或者多屏之间的通信,此种方法只限于程序集内部,通过反射机制完成。所以BC屏之间的通讯,各方必须提供公共的方法,并且约束方法名,以便使用者调用;此种方法使用于多个屏之间互相调用。 注: 1、ABC屏分别代表第一,第二,第  

       由于最近的项目要实现一机多屏(实际上属于同一个IE,同一个Siverlight程序,通过宿主(B屏)New对象,添加到B屏容器中,并展示B与C屏共同展示),B与C屏或者多屏之间的通信,此种方法只限于程序集内部,通过反射机制完成。所以BC屏之间的通讯,各方必须提供公共的方法,并且约束方法名,以便使用者调用;此种方法使用于多个屏之间互相调用。

注:

1、ABC屏分别代表第一,第二,第三屏幕显示,属于同一个IE浏览器内(1280X3,1024);

2、由于框架上的设计已经写好,不能更改框架,另外B屏与C屏是属于不同的silverlight项目的,所以建立此种方式,创建对象来引用C屏;

        以下分别说明调用:

1、  B屏调用C屏,C屏必须提供的公共方法

 1)、B屏项目

        /// <summary>        /// C屏的MainPage页面对象,前提是B屏项目必须引用C屏项目         /// </summary>        CScreenProject.MainPage mpObj = null;mpObj = new CScreenProject.MainPage();        //利用反射对象寻找方法并调用(前提必须是要知道公共的方法名)//无返回无参数方法的调用        Type type = mpObj.GetType();        var methodobj = type.getmethod("ShowWindow");ShowWindow为方法名        methodobj.Invoke(mpObj,null);


 

 

 2) 、C屏项目

      //提供公共方法,用于B屏调用       public voID ShowWindow()      {            MessageBox.Show("d出的窗口:您使用的是无参数方法");      }

2、C屏调用B屏,B屏必须提供的公共方法

   1)、C屏

 

          // 寻找引用该项目的宿主对象的外框            FrameworkElement obj = GetParentByname(this,"BScreenProject.MainPage");//第二个参数必须全称(包括命名空间)            //利用反射对象寻找方法并调用(前提必须是要知道公共的方法名)            if (obj != null)            {                Type type = obj.GetType();                var methodobj = type.getmethod("CScreenProjectMethod"); // B屏提供的方法                methodobj.Invoke(obj,new object[] { "C屏调用了B屏方法!" });//无返回无参数方法的调用            }        /// <summary>        /// 根据名称查找对应的API框架对象        /// </summary>        /// <param name="obj">FrameworkElement对象</param>        /// <param name="name"> B屏上引用C屏页面的名称(命名空间+类)</param>        /// <returns>API对象或null</returns>        protected FrameworkElement GetParentByname(FrameworkElement obj,string name)        {            if (obj != null)            {                if (obj.GetType().Fullname.IndexOf(name) > -1)                {                    return obj;                }                else                {                    return GetParentByname((FrameworkElement)obj.Parent,name);                }            }            else            {                return null;            }        }


   2)、B屏

        /// <summary>        /// 提供C屏调用的方法         /// </summary>        /// <param name="strData">参数</param>        public voID CScreenProjectMethod(string strData)        {            MessageBox.Show(strData);        }
总结

以上是内存溢出为你收集整理的(Siverlight应用程序之间)通过宿主(B屏)New对象,进行的交互消息(反射)全部内容,希望文章能够帮你解决(Siverlight应用程序之间)通过宿主(B屏)New对象,进行的交互消息(反射)所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存