1、如果你想知道,不如搜索一下 C#反射,自己试着写几段代码,就可以大概了解怎么写你这个需求了。
说简单也是很简单的,也就两三句代码就可以实现基本需求。
2、性能问题泛泛而谈根本没有用。你得看这个慢在整个操作过程中所占的比例,你操作要1秒还是1小时还是一天。
建个三峡大坝几十年,这个慢啊,多么影响国民经济。
为啥不随便找个人用手摇发电,多快。
或者简单的说,你这样问的情况,反射的性能都不是问题。
你写的代码造成的性能问题影响更大。别伤心,这话对很多人是适应的,包括编程5年10年的老手。
如果你用来反射的处理进程对性能要求极苛,几个毫秒都不能等的话,建议还是放弃使用C#,
把这部分的代码外包给C++做好点,或者烧个片子,调用汇编合适一些。
@幻天芒: 被你发现了,灭口的人已经在路上了,你等着被查水表吧。
1、假设反射需要10MS, 功能代码1MS。
测试都是这样进行的10+1,运行10万次,然后告诉你速度变慢了10倍。
然而真实的世界是,程序员这样写代码,会被打死的。
2、反射10MS,功能代码100MS,这个就更加不是问题了。
所有性能成本环节中的一个小环节。
通常大部分场景下,整体运行成本都是远超过反射的,除非少数特定的操作。
在特定的场景下,你懂得EF,懂得反射,你仍然可以返回使用ADO使用汇编,使用C++的。
不要被性能这个指标坑了就不用EF不用反射。
@幻天芒: 接口编程。需要动态注入吧,流程就是读取配置文件,反射,注入。
也就是说第一次调用一样慢(其实不慢,只是相对慢),后面调用才会快的。
如果需要第一次调用也快的话,也行,预热。(其实第一次还是慢,就是预热)
用户感觉到的已经是第二次了。
@爱编程的大叔: 正是如此,哈哈。如果是Web的应用程序启动,用户基本是无法感知的。所以,有何影响呢。我就不纠结反射的性能。又不是每次调用都要反射,而且就算是反射,性能也查不到哪儿去,优化下页面代码和做下相关的Web优化,效果更好。
@幻天芒: 如果是WEB更加没有问题了,网页从服务器传到浏览器都好几百毫秒了,我还没说一个网页打开要几秒的呢。这就是TCO。
类似的, EF的TCO是。
@爱编程的大叔: 在后端处理时间相差不大的情况下,优化前端更有意义。
@幻天芒: 对头,因为200MS只是一个基准数字,写得好写得不好,
可能是100毫秒~800毫秒的差别,你优化了半天,多花了3个月开发时间用ADO.NET而不用EF,
结果只要一个稍微不用心的前端(可能还是高手),就可以把省下的时间全部浪费了。
优化性能要找对地方,通常等到需要优化反射或者EF性能的时候,你的工资应该已经超过百万年薪了。
@爱编程的大叔: 确实如此,关于问题本身,直接Ioc就行。
因为各个类里面是处理的不同的业务,只是类名不同,方法都一样,具体的方法里面跟据当前所在的状态来做具体的业务
为什么不提出共同的封装一下呢
最好不要用类名来做。我一般的做法是通过枚举来做“路由”。
枚举是知道范围才能用吧,我现在做的是每个类相当于一个流程,每增加一个流程,就增加一个类,该类是实现该流程下的业务
所以类的命名我是以流程的唯一号来命名的,在调用时先找到流程的唯一号,再根据唯一号来实例调用实现的业务类
@beggar_: 如果是不需要与系统的其它部分匹配的话,直接像楼下那样做就可以了。
你讲到了设计模式,我比较看好 @ ,与@ 的,jello chen说的封装你可以试试,Qlin其实比较接近适配器模式,你自己也可以试试
我理解应该是个策略模式吧
简单工厂就行了,通过className 创建不同的实例