在线时间:8:00-16:00
132-9538-2358
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
代码出自《c#3.0设计模式》两个结构的对象
class Element { public Element Next { get; set; } public Element Part { get; set; } public Element() { } public Element(Element next) { Next = next; } } class ElementWithLink : Element { public ElementWithLink(Element part, Element next) { Next = next; Part = part; } }
与反射相关的核心代码
abstract class IVisitor { public void ReflectiveVisit(Element element) { Type[] types = new Type[]{element.GetType()}; //搜索参数与指定参数类型匹配的指定公共方法 //第一个参数是方法名称 //第二个参数为参数对象的数组,顺序和类型必须一致 MethodInfo methodinfo = this.GetType().GetMethod("Visit", types); if (methodinfo != null) { //使用指定的参数调用当前实例所表示的方法或构造函数 //第一个参数是被调用方法的对象的实例 //第二个参数是该方法的参数,顺序和类型都必须一致 methodinfo.Invoke(this, new object[] { element }); } else { Console.WriteLine("Unexpected Visit"); } } }
如果不懂请看注释访问器
class CountVisitor : IVisitor { public int Count { get; set; } public void CountElements(Element element) { ReflectiveVisit(element); if (element.Part != null) { CountElements(element.Part); } if (element.Next != null) { CountElements(element.Next); } } public void Visit(ElementWithLink element) { Console.WriteLine("not counting"); } public void Visit(Element element) { Count++; } }
客户端代码
class Program { static void Main(string[] args) { Element objectStructure = new Element( new Element( new ElementWithLink( new Element( new Element( new ElementWithLink( new Element(null),new Element(null) ))), new Element( new Element( new Element(null) ))))); Console.WriteLine("count it"); CountVisitor visitor = new CountVisitor(); visitor.CountElements(objectStructure); Console.WriteLine(visitor.Count); Console.ReadKey(); } }
关于访问者模式 反射的内容以后肯定要更详细的介绍
评论
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
请发表评论