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

反射基础


文章目录

  • 项目地址
  • 一、使用反射创建实例
  • 二、使用反射操作字段
  • 三、操作程序集
  • 四、操作构造函数


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
c#

一、使用反射创建实例

using System;
using System.Reflection;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class Program
{
    public static void Main()
    {

        //1.获取类型
        Type type = typeof(Person);
        //2.获取属性    
        var propertyInfo = type.GetProperty("Name");
        //3.创建实例
        var instance = Activator.CreateInstance(type);
        //4.设置属性值
        propertyInfo?.SetValue(instance, "FXX");
        //5.获取属性值
        var name = propertyInfo?.GetValue(instance);
        Console.WriteLine(name);
    }
}

二、使用反射操作字段

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    private string _address;
}

public class Program
{
    public static void Main()
    {

        Type type = typeof(Person);
        var propertyInfo = type.GetField("_address",BindingFlags.Instance|BindingFlags.NonPublic);
        var instance = Activator.CreateInstance(type);
        propertyInfo?.SetValue(instance, "Forrest Hill");
        var adrress = propertyInfo?.GetValue(instance);
        Console.WriteLine(adrress);
    }
}

三、操作程序集


public class Program
{
    public static void Main()
    {
        //根据程序集名称加载程序集
        var assembly = Assembly.Load("ConsoleApp1");

        //获取程序集完整路径
        string location = assembly.Location;
        Console.WriteLine(location);
        //获取程序集名称
        string name = assembly.GetName().Name;
        Console.WriteLine(name);

    }
}

四、操作构造函数


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

相关文章:

  • Springcloud高校选课管理系统-计算机毕业设计源码27115
  • 【Linux】Pinctrl子系统和GPIO子系统
  • CAD数据提取
  • 微服务的注册中心Nacos
  • java 对人名和电话 脱敏-replaceAll
  • GY-56 (VL53L0X) 激光测距
  • 6-1.Java 面向对象 - 初级(对象与属性、对象与方法、递归、重载、可变参数、作用域、构造器、对象创建流程详解、this 关键字)
  • 信息学科平台系统设计与实现:Spring Boot技术手册
  • windows11 安装 maven
  • 【MFC编程(一)】MFC概述
  • 非洲:人口红利下的市场蓝海与五金需求的无限可能
  • leetcode-643. 子数组最大平均数 I
  • Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
  • 右旋圆极化散射后的stocks矢量 与T3矩阵的关系
  • 【UE5】Cesium GlobePawn 如何Fly To
  • YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路
  • CertiK发现三星区块链密钥库的高风险漏洞,第3次获得致谢
  • qt QHeaderView详解
  • C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(3)
  • lerna+umi ‘max‘ 不是内部或外部命令,也不是可运行的程序
  • ./bin/mindieservice_daemon启动成功
  • 基于STM32的实时时钟(RTC)教学
  • Spring配置文件初始化加载(一)
  • Redis学习:Redis可重入分布式锁、Redlock算法和底层源码分析
  • 如何用Python精确计算当前时间之前一年、一月和一天
  • golang分布式缓存项目 Day 1