在 C# 中使用反射通过字符串输入设置属性值
操作对象通常需要动态设置属性值,即使这些值最初作为字符串提供。 当属性的类型与字符串不同时,这可能会很棘手。 直接使用类型不匹配的 SetValue()
会导致 ArgumentException
.
考虑使用字符串“5.5”更新 Ship
对象的“Latitude”属性(数字类型)。 解决方案在于在赋值之前将字符串转换为正确的数据类型。 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>
此代码利用 propertyInfo.PropertyType
中的运行时类型信息在设置“Latitude”属性之前正确转换字符串“5.5”。这种方法有效地处理各种属性类型,为使用字符串输入的动态属性值分配提供了强大的解决方案。
以上是如何在 C# 中使用反射和字符串输入来设置属性值?的详细内容。更多信息请关注PHP中文网其他相关文章!