gpt4 book ai didi

c# - 将字符串转换为对象类型

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:54 25 4
gpt4 key购买 nike

我必须实现的代码从网页的 Ajax 调用中获取已发布的数据列表。

我知道我需要更新的对象,但每个字段/值对都是作为字符串值而不是它们的正确类型出现的。

所以我试图找出属性的类型,将值转换为新类型,然后使用反射将其应用于字段。

但是,对于字符串以外的任何内容,我都收到以下错误。

Invalid cast from 'System.String' to 'System.TimeSpan'.

我尝试转换的代码是;
    public void Update<T>(string fieldName, string fieldValue)
{
System.Reflection.PropertyInfo propertyInfo = typeof(T).GetProperty(fieldName);
Type propertyType = propertyInfo.PropertyType;

var a = Convert.ChangeType(fieldValue, propertyType);
}

目标对象也是如此。

最佳答案

没有适用于所有类型的绝对答案。但是,您可以使用 TypeConverter而不是转换,它通常效果更好。例如,有一个 TimeSpanConverter :

public void Update<T>(string fieldName, string fieldValue)
{
System.Reflection.PropertyInfo propertyInfo = typeof(T).GetProperty(fieldName);
Type propertyType = propertyInfo.PropertyType;

TypeConverter converter = TypeDescriptor.GetConverter(type);
if (converter.CanConvertFrom(typeof(string)))
{
var a = converter.ConvertFrom(fieldValue, type);
...
}
}

关于c# - 将字符串转换为对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973465/

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