在Visual Studio 2010中,是否可以防止第一次机会异常写入“输出”窗口?我们有一个场景,其中有许多转换被设计失败,并且输出窗口在调试时实际上减慢了应用程序的速度。写出一个'System.InvalidCastException'类型的第一次机会异常发生...一遍又一遍只需要很长时间。 Visual Studio中的控制台速度不快:<)
我知道不会破坏第一次机会异常的选项,但这似乎不会影响输出窗口。也没有把它放在使我们放慢速度的区域之前:
Debug.Listeners.Clear()
关闭“输出”窗口也没有帮助。它在发布模式下运行速度非常快。
感谢任何帮助!
答案 0 :(得分:4)
我可以为Visual Studio 2013回答这个问题:
在VS 2013中,您可以转到DEBUG菜单 - 选项和设置... - 调试 - 输出窗口。 在“常规输出设置”下,您会找到“异常消息”。把它关掉。
答案 1 :(得分:0)
根据@Iridium的评论,我最终改为Try模式并返回bool作为成功标志而不是抛出InvalidCastException。看起来很像这样:
if (!property.CanAssignValue(valueToSet))
{
Debug.Write(string.Format("The given value {0} could not be assigned to property {1}.", value, property.Name));
return false;
}
property.SetValue(instance, valueToSet, null);
return true;
“CanAssignValue”成为三个快速扩展:
public static bool CanAssignValue(this PropertyInfo p, object value)
{
return value == null ? p.IsNullable() : p.PropertyType.IsInstanceOfType(value);
}
public static bool IsNullable(this PropertyInfo p)
{
return p.PropertyType.IsNullable();
}
public static bool IsNullable(this Type t)
{
return !t.IsValueType || Nullable.GetUnderlyingType(t) != null;
}
谢谢!