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

11.用反射为静态类的属性赋值 C#例子 WPF例子

  1. 获取字段信息:通过字段名从 Variable_Library 类中获取静态公共属性的 PropertyInfo

  2. 解析值:根据字段类型,将字符串值解析为对应类型的对象。

  3. 赋值:将解析后的值赋给字段,如果字段不存在则输出调试信息。

        public static void AssignValue(string variableName, string variableType, string variableValue){// 获取当前类型的字段信息PropertyInfo? field = typeof(Variable_Library).GetProperty(variableName, BindingFlags.Static | BindingFlags.Public);if (field != null){// 根据类型解析值object value = ParseValue(variableType, variableValue);// 为变量赋值field.SetValue(null, value);}else{Debug.WriteLine($"Field {variableName} not found.");}}
详细解析
  1. 获取字段信息

    PropertyInfo? field = typeof(Variable_Library).GetProperty(variableName, BindingFlags.Static | BindingFlags.Public);
    • 使用 typeof(Variable_Library) 获取 Variable_Library 类的类型信息。

    • 调用 GetProperty 方法,传入字段名 variableName 和绑定标志 BindingFlags.Static | BindingFlags.Public,查找静态且公共的属性。

    • 如果找到对应的属性,field 会被赋值为对应的 PropertyInfo 对象;否则为 null

  2. 解析值

    object value = ParseValue(variableType, variableValue);
            private static object ParseValue(string type, string value){switch (type){case "string":return value;case "Int32":return int.Parse(value, CultureInfo.InvariantCulture);case "Boolean[]":string[] strings = value.Split(' ');bool[] bools=new bool[strings.Length];for (int i = 0; i < strings.Length; i++){if(!bool.TryParse(strings[i], out bools[i])){bools[i] = false; // 如果解析失败,默认设置为false}}return bools;case "Int64":return long.Parse(value);case "DateTime":return DateTime.Parse(value);default:throw new ArgumentException($"Unsupported type: {type}");}}
    • 调用 ParseValue 方法,根据字段类型 variableType 和字符串值 variableValue,解析出对应类型的对象。

    • ParseValue 方法的作用是将字符串转换为指定类型的值(例如,将字符串 "true" 转换为布尔值 true)。

  1. 赋值

    field.SetValue(null, value);
    • 如果字段存在(field != null),调用 SetValue 方法为字段赋值。

    • null 表示字段是静态的,value 是解析后的值。

  2. 处理字段不存在的情况

    Debug.WriteLine($"Field {variableName} not found.");
    • 如果字段不存在(field == null),输出调试信息,提示字段未找到。

总结

这段代码的作用是:

  • 通过字段名从 Variable_Library 类中查找静态公共属性。

  • 如果找到字段,解析字符串值为对应类型的对象,并为字段赋值。

  • 如果字段不存在,输出调试信息提示。

http://www.xdnf.cn/news/17878.html

相关文章:

  • 第六十五章:AI的“精良食材”:图像标注、视频帧抽帧与字幕提取技巧
  • 数据挖掘常用公开数据集
  • 【KO】Android 网络相关面试题
  • Redis 核心数据结构与常用命令详解
  • Qwen-Image(阿里通义千问)技术浅析(二)
  • HTTP 协议详细介绍
  • 第6章 AB实验的SRM问题
  • elasticsearch mapping和template解析(自动分词)!
  • 何解决PyCharm中pip install安装Python报错ModuleNotFoundError: No module named ‘json’问题
  • Flink DataStream 按分钟或日期统计数据量
  • 如何在VS里使用MySQL提供的mysql Connector/C++的debug版本
  • LeetCode 刷题【40. 组合总和 II】
  • 基于C#、.net、asp.net的心理健康咨询系统设计与实现/心理辅导系统设计与实现
  • 药房智能盘库系统的Python编程分析与实现—基于计算机视觉与时间序列预测的智能库存管理方案
  • Redis学习——Redis的十大类型String、List、Hash、Set、Zset
  • 仓库无人叉车的安全功能有哪些?如何在提升效率时保障安全?
  • 机器学习——svm支持向量机
  • 为什么要使用消息队列呢?
  • 【龙泽科技】汽车故障诊断仿真教学软件【科鲁兹】
  • 总经理掌舵研发团队:在技术突破与商业落地间找到平衡的艺术-中小企实战运营和营销工作室博客
  • 力扣 hot100 Day72
  • Gradle(二)Gradle的优势、项目结构介绍
  • LINUX812 shell脚本:if else,for 判断素数,创建用户
  • Spring Boot项目中调用第三方接口
  • B站 韩顺平 笔记 (Day 16)
  • 终端安全与网络威胁防护笔记
  • 秋招笔记-8.12
  • Web 安全之互联网暴露面管理
  • 计算机网络2-3:传输方式
  • 赛灵思ZYNQ官方文档UG585自学翻译笔记:UART Controller,通用异步收发传输器控制器