使用反射有什么风险?它以任何方式违背OOP吗?
我开始在C#项目中轻松使用它,现在我发现它在许多场景中都很实用.
谢谢.
OOP是一种技术和结构,而不是宗教.
你不会因为没有在你的项目中使用它而犯罪.如果你知道更好的方法,那就去吧.明智地使用反射可以为您节省很多复杂性.
只要确保它干净可读,你的队友就不要把你钉在十字架上.反思是强大的,但强大的力量带来了巨大的责任,等等.
要回答标题中的问题:不,不是先验.例如,当实现工厂来创建不同(但相关)类型的对象时,反射可以非常方便.
但是,这些都是实现细节,通常应隐藏在通用接口后面.反思也往往很慢,因此不鼓励过度使用.基本上,当没有其他(好的)解决方案时,使用它,而不是其他地方.
OOP一般不会与反思竞争.但是当OOP足够时,不要尝试使用反射来实现动态调度或侦听器/回调.