最近在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(),不过在应用中比较容易出错,尤其是类型转换的时候。

在此做个备忘录,后续持续跟进。

最新文章

  1. OpenCASCADE JT Assistant
  2. 简述UIViewControl之间的七种传值方式~~~
  3. js执行跨域请求
  4. JQuery------获取&lt;input type=&quot;file&quot;&gt;中的文件内容
  5. Android--菜单详解
  6. Nmap备忘单:从探索到漏洞利用(Part 4)
  7. Phpcms V9网站从本地上传到服务器需要修改的地方
  8. viewPager+Handler+Timer简单实现广告轮播效果
  9. [LeetCode]Link List Cycle
  10. MultiSet
  11. 内核工具 – Sparse 简介
  12. eclipse运行hadoop程序报错:Connection refused: no further information
  13. MyBatis-Spring 执行SQL语句的流程
  14. TCP/IP 学习博客
  15. HDOJ 1215 七夕节
  16. UITableView 的使用总结
  17. Atitit..文件上传组件选择and最佳实践的总结(2)----HTTP
  18. Linux内核中SPI总线驱动分析
  19. PeopleSoft translate value 排序
  20. Robin Hood CodeForces - 672D (二分)

热门文章

  1. 大厂面试题:集群部署时的分布式 session 如何实现?
  2. vs2019 目标框架是灰色的原因
  3. 浅析TCP/IP协议
  4. OAuth 流程与发展总结 (1.0 =&gt; 1.0a =&gt; 2.0)
  5. ubuntu下载eclipse详细步骤
  6. 误用git reset -hard 的检讨书
  7. 五分钟学Java:如何才能学好Java Web里这么多的技术
  8. C++ 指针偏移的理解
  9. 【Weiss】【第03章】链表例程
  10. 网络安全从入门到精通 ( 第二章-5) 后端基础PHP—简介及基本函数-下