110,533
社区成员
发帖
与我相关
我的任务
分享
IAvatar instance = (IAvatar)Activator.CreateInstance(t);
var result1 = instance.ImageUrl;
var result2 = instance.IsMyFriend();
真正懂得反射的人,并不滥用反射。反倒是一些不成熟的人,胡乱地过度理解什么“控制反转”概念,胡乱反射。
你可以看到,在编译期就按照 IAvatar 接口去编排后续的代码、进行类型检验和代码生成了。读取 ImageUrl 属性和调用 IsMuFriend 用神马反射呢?
从头脑发热地过度反射,你能看出一些糟糕的习惯。IAvatar instance = Activator.CreateInstance(t);
var result1 = instance.ImageUrl;
var result2 = instance.IsMyFriend();
也就是说,人家是因为有了“面向接口编程抽象”这种大战略,才有了工厂方法。
而那些滥用反射的过头做法,写不了多少代码就难以调试、难以扩展、难以保证基本的质量了。这种方式貌似挺时髦挺技术化,其实坑人。