在3分钟内,什么是反思?

gre*_*ade 41 .net reflection

许多.Net访谈问题清单(包括好问题清单)都包含一个问题:"什么是反思?".我最近被要求在5个问题的背景下回答这个问题,技术测试是在15分钟内在一张自助餐厅交给我的空白纸上完成的.我的回答是"反射允许您在运行时发现任何对象的方法,属性和字段".回想起来,我的回答解释了如何使用反射,但它没有解释反射是什么.在我看来,我的答案是足以传达我明白了什么是反思,但并没有走那么远,解释什么反思.

所以,请在.Net的上下文中,用您自己的简洁词语来定义反射什么.回答不要花费超过三分钟.不要参考.Net文档,我们都看过了.

Bri*_*sen 43

反射是以动态方式查询类型系统并与之交互的能力.

  • 但那么,方法的类型系统的代码部分是什么?在我看来,您不仅仅与类型系统进行交互 (3认同)
  • @Guge:反思不仅仅是发现.您也可以调用方法和获取/设置字段,这是我尝试用"交互"覆盖的内容. (2认同)

jk.*_*jk. 12

内省的一种形式,即编写查询代码的代码的能力

  • +1 IMO最容易理解的答案 - 现在我明白为什么它被称为"反射" - 就像照镜子一样. (5认同)

ant*_*tik 9

反射是CLR对代码级对象的认识,例如通过API公开的类名,方法等,即System.Reflection,它允许开发人员在其代码中利用运行时对这些信息的认知.

规则违规:为了准确起见,我已经从原始表格中编辑了这个答案.

  • 事实上,我喜欢这个为运行时更改编译器的答案. (2认同)

Amn*_*non 8

反思是程序将自身作为数据处理的能力.


Bri*_*ink 6

反思就像海军凝视代码.

  • 实际上,我认为应该是"肚脐"或"Omphaloskepsis":-) (7认同)
  • 我甚至想知道什么是海军瞄准者? (5认同)
  • 涉及加油海军舰艇的事情. (3认同)

Gug*_*uge 5

在编译.Net语言期间,编译器将有关程序的信息放入程序文件中.程序本身或其他程序可以使用此信息来查找程序包含哪些类,它们的方法,属性,字段和事件.即使其他程序在运行之前对它们一无所知,也可以通过反射使用类及其方法,属性等.这允许不同的程序松散耦合并使各种令人兴奋的编程成为可能.Reflection也可用于在运行程序或程序文件中构建其他类.