我正在尝试为通用类型复制TryParse,并认为TypeDescriptor可能会给我我想要的东西。所以我提出了以下测试用例,但它失败了,只是想知道是否有人知道我哪里出错了。
[TestMethod]
public void Test()
{
string value = "Test";
Guid resultValue;
var result = this.TryConvert(value, out resultValue);
}
public bool TryConvert<T>(string value, out T resultValue)
{
var converter = System.ComponentModel.TypeDescriptor.GetConverter(typeof(T));
if (converter.IsValid(value))
{
resultValue = (T)converter.ConvertFrom(value);
return true;
}
resultValue = default(T);
return false;
}
注意,我不想使用try catch块。
干杯 安东尼
答案 0 :(得分:2)
来自TypeConverter.IsValid
的MSDN文档:
IsValid
方法用于验证类型中的值,而不是确定是否可以将值转换为给定类型。
因此它只会检查值的类型,而不是值是否是可以解析的正确输入。