C#使用反射设置属性值
2024-09-01 12:01:26
最近在Refix一个支持Excel文件导入导出功能时,发现有用到反射的相关技能。故而在网上查了些资料,通过代码调试加深下理解。
class Program
{
static void Main(string[] args)
{
var student = new Student() { Name = "Jack", Address = "Lingbi County", City = "Zhangyuan" };
var studentName = GetModelValue("Name", student);
var studentCity = SetModelValue("City", "Wuhan", student);
Console.WriteLine($"Hello World! {student.Name}, {student.City}"); } /// <summary>
/// 获取类中的属性值
/// </summary>
/// <param name="FieldName"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static string GetModelValue(string FieldName, object obj)
{
try
{
Type Ts = obj.GetType();
object o = Ts.GetProperty(FieldName).GetValue(obj, null);
string Value = Convert.ToString(o);
if (string.IsNullOrEmpty(Value)) return null;
return Value;
}
catch
{
return null;
}
} /// <summary>
/// 设置类中的属性值
/// </summary>
/// <param name="FieldName"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static bool SetModelValue(string FieldName, string Value, object obj)
{
try
{
Type Ts = obj.GetType();
object v = Convert.ChangeType(Value, Ts.GetProperty(FieldName).PropertyType);
Ts.GetProperty(FieldName).SetValue(obj, v, null);
return true;
}
catch
{
return false;
}
} public class Student
{
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
}
}
代码中主要使用到GetType(), GetValue(), 以及SetValue(),不过在应用中比较容易出错,尤其是类型转换的时候。
在此做个备忘录,后续持续跟进。
最新文章
- OpenCASCADE JT Assistant
- 简述UIViewControl之间的七种传值方式~~~
- js执行跨域请求
- JQuery------获取<;input type=";file";>;中的文件内容
- Android--菜单详解
- Nmap备忘单:从探索到漏洞利用(Part 4)
- Phpcms V9网站从本地上传到服务器需要修改的地方
- viewPager+Handler+Timer简单实现广告轮播效果
- [LeetCode]Link List Cycle
- MultiSet
- 内核工具 – Sparse 简介
- eclipse运行hadoop程序报错:Connection refused: no further information
- MyBatis-Spring 执行SQL语句的流程
- TCP/IP 学习博客
- HDOJ 1215 七夕节
- UITableView 的使用总结
- Atitit..文件上传组件选择and最佳实践的总结(2)----HTTP
- Linux内核中SPI总线驱动分析
- PeopleSoft translate value 排序
- Robin Hood CodeForces - 672D (二分)
热门文章
- 大厂面试题:集群部署时的分布式 session 如何实现?
- vs2019 目标框架是灰色的原因
- 浅析TCP/IP协议
- OAuth 流程与发展总结 (1.0 =>; 1.0a =>; 2.0)
- ubuntu下载eclipse详细步骤
- 误用git reset -hard 的检讨书
- 五分钟学Java:如何才能学好Java Web里这么多的技术
- C++ 指针偏移的理解
- 【Weiss】【第03章】链表例程
- 网络安全从入门到精通 ( 第二章-5) 后端基础PHP—简介及基本函数-下