gpt4 book ai didi

c# - 使用字符串值通过反射设置属性

转载 作者:IT王子 更新时间:2023-10-29 03:28:22 24 4
gpt4 key购买 nike

我想通过反射设置一个对象的属性,其值类型为string。因此,例如,假设我有一个 Ship 类,其属性为 Latitude,这是一个 double

这是我想做的:

Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, value, null);

照原样,这会抛出一个 ArgumentException:

Object of type 'System.String' cannot be converted to type 'System.Double'.

如何根据 propertyInfo 将值转换为正确的类型?

最佳答案

您可以使用 Convert.ChangeType() - 它允许您使用任何 IConvertible 类型的运行时信息来更改表示格式。但是,并不是所有的转换都是可能的,如果您想要支持来自不是 IConvertible 的类型的转换,您可能需要编写特殊情况逻辑。

相应的代码(没有异常处理或特殊情况逻辑)将是:

Ship ship = new Ship();
string value = "5.5";
PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude");
propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);

关于c# - 使用字符串值通过反射设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com