使用 TypeDescriptor 代替 TryParse
我正在尝试复制泛型类型的 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 块。
干杯 安东尼
I am trying to replicate TryParse for generic types and thought that TypeDescriptor might give me what I am after. So I came up with the following test case but it is failing, just wondering if anyone knows where I am going wrong.
[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;
}
Note, I don't want to use a try catch block.
Cheers
Anthony
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自
TypeConverter.IsValid
的 MSDN 文档:所以它只会检查值的类型,而不检查该值是否是可以解析的正确输入。
另请参阅此 Connect 票证。
From MSDN documentation for
TypeConverter.IsValid
:So it will only check the type of the value, not whether the value is correct input that can be parsed.
Also see this Connect ticket.