首页 >后端开发 >C++ >如何在 C# 中使用反射安全地设置字符串属性值?

如何在 C# 中使用反射安全地设置字符串属性值?

Barbara Streisand
Barbara Streisand原创
2025-01-20 10:38:09747浏览

How to Safely Set String Property Values Using Reflection in C#?

使用反射设置字符串类型属性值

使用反射设置字符串类型属性值时,如果目标属性预期的是其他类型,则可能会导致 ArgumentException 异常。

解决方案:使用 Convert.ChangeType() 进行动态类型转换

为了解决这个问题,可以使用 Convert.ChangeType() 方法。此方法利用运行时信息来转换数据类型。但是,需要注意的是,并非所有转换都是可行的。

代码示例:

考虑以下代码片段:

<code class="language-csharp">Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
  1. 获取属性:propertyInfo = ship.GetType().GetProperty("Latitude") 获取 "Latitude" 属性信息。
  2. 转换字符串值:Convert.ChangeType(value, propertyInfo.PropertyType) 将字符串 "5.5" 转换为双精度浮点数,这与属性类型匹配。
  3. 设置属性值:propertyInfo.SetValue(ship, ..., null) 将属性设置为转换后的值。

注意: 此解决方案假设没有异常处理或针对使用 Convert.ChangeType() 无法直接转换的类型的特殊情况逻辑。

以上是如何在 C# 中使用反射安全地设置字符串属性值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn