【发布时间】:2015-10-03 18:10:36
【问题描述】:
我正在尝试创建一个实用方法,该方法使用TypeConverter 将任意类型的值转换为另一种类型。但是,当尝试将某些内容转换为字符串时,TypeConverter 总是失败。
private bool TryConvertType(object value, Type targetType, out object result) {
result = null;
if(value == null)
return false;
try {
if(targetType.IsInstanceOfType(value)) {
result = value;
return true;
}
var typeConverter = TypeDescriptor.GetConverter(targetType);
if(typeConverter.CanConvertFrom(value.GetType())) {
result = typeConverter.ConvertFrom(value);
return true;
}
...
给定 value 作为类型 bool 和 targetType string,方法 .CanConvertFrom() 总是返回 false。为什么不能从boolean 值创建string?还是我在这里遗漏了什么?
【问题讨论】:
-
需要有关错误的更多信息。但首先一个问题 .ToString() 有什么问题??
-
@BillRuhl 错误很简单:TypeDescriptor 无法从布尔值转换为字符串。 (.CanConvertFrom() 返回 false)。而已。而且,如您所见, utlity 方法的想法是将任何值转换为另一种类型。我只是在这个例子中使用了字符串 bool。
-
嗯......我再次不确定你之后的内容,但 C# 已经完成了所有这些,如果你在 bool 值上调用 .ToString() 它将返回“true”或“false”。对 TypeDescriptor 类本身并不确定,但您面临的一件事是内存分配。将布尔值转换为字符串是一回事,您只会得到真或假,但从字符串到布尔值将不起作用......
标签: c# .net reflection types type-conversion