利用反射设置字符串属性值
使用反射和字符串值设置属性值可能比较棘手,因为可能需要进行类型转换。
假设有一个Ship类,它有一个名为Latitude的属性,类型为double。以下代码尝试将此属性设置为字符串值"5.5":
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
然而,这段代码会抛出一个ArgumentException异常,因为字符串值无法直接转换为double类型。
为了解决这个问题,可以使用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>
通过使用Convert.ChangeType(),字符串值成功转换为double类型并赋值给Latitude属性。 请注意,如果某些特定类型的转换不受支持,则可能需要处理异常或实现特殊情况逻辑。
以上是如何使用反射和字符串输入来设置属性值?的详细内容。更多信息请关注PHP中文网其他相关文章!