C# 面试题 目录

C# 中反射 (Reflection) 的概念和用途

推荐答案

-- -------------------- ---- -------
----- -------
----- ------------------

------ ----- -----------------
-
    ------ ---- ---------------------- -----
    -
        ------------ ------- - ------------------
        ------- ----------- ------ -- --------
        -
            ------------------------- ----- - - -------------
            ------------------------- ----- - - -------------------
        -
    -
-

----- -------
-
    ------ ---- ------
    -
        ----------------- ------- - --- --------------------
        ------------------------------------------
    -
-

本题详细解读

反射的概念

反射(Reflection)是 C# 中一种强大的机制,它允许程序在运行时获取类型信息,并且可以动态地调用类型的方法、访问字段和属性等。通过反射,程序可以在不知道类型的情况下,动态地创建对象、调用方法、访问字段等。

反射的用途

  1. 动态类型检查:反射可以在运行时检查对象的类型,而不需要在编译时知道具体的类型。
  2. 动态调用方法:通过反射,可以在运行时动态地调用对象的方法,即使这些方法在编译时是未知的。
  3. 访问私有成员:反射可以访问类的私有成员,这在某些特殊情况下非常有用。
  4. 插件架构:反射可以用于实现插件架构,允许在运行时加载和使用外部程序集中的类型。
  5. 序列化和反序列化:反射在对象的序列化和反序列化过程中起着重要作用,特别是在处理未知类型时。

代码解析

  • Type.GetMethods():获取指定类型的所有公共方法。
  • MethodInfo:表示方法的元数据,包括方法名称、返回类型、参数等。
  • typeof(String):获取 String 类型的 Type 对象。

在示例代码中,DisplayMethodInfo 方法通过反射获取 String 类型的所有公共方法,并输出每个方法的名称和返回类型。

纠错
反馈