gpt4 book ai didi

c# - 我该如何解决这个问题以对 Nullable 进行泛型转换?

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

我目前使用这个方便的转换扩展方法来进行类型之间的转换:

    public static T To<T>(this IConvertible obj)
{
return (T)Convert.ChangeType(obj, typeof(T));
}

但是,它不喜欢将有效值转换为 Nullable,例如,这会失败:

    "1".To<int?>();

显然,1 很容易转换为 (int?),但它得到错误:

    Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.

这是一个明显简化的示例,实际上我正在使用它来进行字符串类型的转换,如下所示:

packageDb.Quantity = package.package.ElementDeep(Namespace + "PackageQuantity", Namespace + "ActualQuantity", Namespace + "Quantity").ValueOrNull().To<int?>();

如果 Convert.ChangeType 不喜欢 Nullable,有人有什么好主意吗?

最佳答案

public static T To<T>(this IConvertible obj)
{
Type t = typeof(T);
Type u = Nullable.GetUnderlyingType(t);

if (u != null)
{
return (obj == null) ? default(T) : (T)Convert.ChangeType(obj, u);
}
else
{
return (T)Convert.ChangeType(obj, t);
}
}

关于c# - 我该如何解决这个问题以对 Nullable<T> 进行泛型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/793714/

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