当前位置: 首页 > article >正文

C#面试常考随笔5:简单讲述下反射

描述:

反射允许程序在运行时获取类型的信息,包括类型的成员(如方法、属性、字段等),并可以动态地调用这些成员、创建对象等。

在性能方面,涉及到运行时的类型检查和动态调用,性能相对较低。

示范,帮助理解:

使用场景:

C#的反射使用示例-CSDN博客

基本示范:

1.获取类型信息:可以在运行时获取类型的名称、基类、实现的接口等信息。例如:

using System;

class Program
{
    static void Main()
    {
        Type type = typeof(int);
        Console.WriteLine($"类型名称: {type.Name}");
        Console.WriteLine($"基类: {type.BaseType.Name}");
    }
}

2.动态创建对象:通过反射可以在运行时根据类型信息创建对象。例如:

using System;

class MyClass
{
    public void SayHello()
    {
        Console.WriteLine("Hello!");
    }
}

class Program
{
    static void Main()
    {
        Type type = typeof(MyClass);
        object obj = Activator.CreateInstance(type);
        MyClass myObj = (MyClass)obj;
        myObj.SayHello();
    }
}

3.调用方法和访问属性:可以在运行时动态调用类型的方法、访问和修改属性。例如:

using System;
using System.Reflection;

class MyClass
{
    public int MyProperty { get; set; }

    public void MyMethod()
    {
        Console.WriteLine("Method called.");
    }
}

class Program
{
    static void Main()
    {
        Type type = typeof(MyClass);
        object obj = Activator.CreateInstance(type);

        // 访问属性
        PropertyInfo propertyInfo = type.GetProperty("MyProperty");
        propertyInfo.SetValue(obj, 10);
        int value = (int)propertyInfo.GetValue(obj);
        Console.WriteLine($"Property value: {value}");

        // 调用方法
        MethodInfo methodInfo = type.GetMethod("MyMethod");
        methodInfo.Invoke(obj, null);
    }
}

http://www.kler.cn/a/523391.html

相关文章:

  • 关于opencv环境搭建问题:由于找不到opencv_worldXXX.dll,无法执行代码,重新安装程序可能会解决此问题
  • Microsoft Visual Studio 2022 主题修改(补充)
  • 58.界面参数传递给Command C#例子 WPF例子
  • postgres基准测试工具pgbench如何使用自定义的表结构和自定义sql
  • RK3588平台开发系列讲解(ARM篇)ARM64底层中断处理
  • ubuntu取消输入密码
  • 腾讯云开发提供免费GPU服务
  • 大数运算:整数、小数的加减乘除与取余乘方(c++实现)
  • 我们需要有哪些知识体系,知识体系里面要有什么哪些内容?
  • 面试被问的一些问题汇总(持续更新)
  • Python帝王學集成-母稿
  • 【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)
  • AIGC常见基础概念
  • DeepSeek R1学习
  • 27.日常算法
  • 【Leetcode 热题 100】152. 乘积最大子数组
  • 2025春晚临时直播源接口
  • Jellyfin的快速全文搜索代理JellySearch
  • iperf 测 TCP 和 UDP 网络吞吐量
  • 2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型
  • t113 procd-init文件系统增加自己的程序文件
  • 7-Zip Mark-of-the-Web绕过漏洞复现(CVE-2025-0411)
  • 前端——js高级25.1.27
  • 20250128 大语言模型(Large Language Model, LLM)已成为自然语言处理(NLP)领域的重要突破
  • 脚本/编译安装nginx1.11.10
  • ArcGIS10.2 许可License点击始终启动无响应的解决办法及正常启动的前提