【问题标题】:Casting generic type variable to guid, int, double, etc [duplicate]将泛型类型变量转换为 guid、int、double 等 [重复]
【发布时间】: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


【解决方案1】:

您可以将 guid 保留为字符串。

否则,如果其他一切都失败了,我认为一系列带有 ChangeType 的 TryParses 可以用于字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多