gpt4 book ai didi

c#-4.0 - TypeConverter 不会转换为 bool 值

转载 作者:行者123 更新时间:2023-12-04 00:43:30 24 4
gpt4 key购买 nike

我有以下测试代码,它给我带来了一些问题。我希望能够将 bool 值作为字符串、EG“true”或“false”传递并返回一个 bool 值。该函数应该能够处理其他类型,所以我不能只使用 Convert.ToBoolean() 等。

    protected static T GetDefaultValue<T>(object propertyName)
{
var tc = new TypeConverter();

return (T)tc.ConvertTo(propertyName, typeof(T));
}

当我用这行代码调用上面的函数时,它抛出一个异常:

bool b = GetDefaultValue<bool>("false");

它说“‘TypeConverter’无法将‘System.String’转换为‘System.Boolean’。”

任何人都可以指出如何以我想要的方式使用 TypeConverter 或者它不能以这种方式工作吗?

最佳答案

您可能会在这里遭受很多伤害。首先,不是任何 TypeConverter 都可以,您必须找到知道如何将字符串转换为 bool 值的特定类型转换器。您可以使用 TypeDescriptor.GetConverter() 获得一个。对于 bool 来说不是问题,您将获得 System.ComponentModel.BooleanConventer。并且您必须使用它的 ConvertFrom() 方法,而不是 ConvertTo。所以这很好用:

    protected static T GetDefaultValue<T>(object propertyName) {
var tc = TypeDescriptor.GetConverter(typeof(T));
return (T)tc.ConvertFrom(propertyName);
}
...
bool b = GetDefaultValue<bool>("false"); // fine

但请注意,.NET 仅内置了一组有限的转换器。只是您通常在“属性”窗口中找到的类型。自定义类型需要它们自己的从 TypeConverter 类派生的转换器。

关于c#-4.0 - TypeConverter 不会转换为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721108/

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