【发布时间】:2019-10-10 20:11:04
【问题描述】:
我从一个 XML 文件中读取了一些字符串。现在我遍历我的通用对象 (T) 属性(new T().PropertyInfo),读取类型并希望将 xml 字符串转换为这些属性。
当我使用 Convert.ChangeType(value, property.PropertyType) 时,它会在将字符串更改为 Guid 时崩溃。有时我有 Guid,有时是 int32,有时是 bool,有时是 string,等等。
有人知道如何将字符串转换为任何可能的类型吗?
哦……顺便说一句。我只有property.PropertyType(一个Type VARIABLE),我这里没有T。
【问题讨论】:
-
使用
new Guid("your_guid_string")将字符串转换为 GUID。不幸的是,无法使用 Convert.ChangeType... -
但是我必须知道该字符串包含一个 guid...这里没有通用方法可以帮助我吗?
-
我会使用类似
public static T Convert<T>(this String value) where T : struct =>(T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value); -
我不知道这是否有效,但我没有 T,只有一个类型变量。我不知道如何将其用作 T 等价物。
-
是否有通用方法来处理从字符串到任何类型的转换?不,那里没有。考虑字符串“123”,它是字符串、整数还是小数?这取决于您的业务逻辑来确定它是什么。我建议您创建一个询问
PropertyType并调用适当转换器的方法。此方法将是您的当前用例的通用转换器。
标签: c# string type-conversion guid generic-programming