2

在 Visual Studio 2010 中,是否可以防止首次机会异常写入输出窗口?我们有一个场景,有很多强制转换设计失败,并且输出窗口在调试时确实减慢了应用程序的速度。写出“System.InvalidCastException”类型的第一次机会异常发生......一遍又一遍只需要很长时间。Visual Studio 中的控制台并不快 :<)

我知道不中断第一次机会异常的选项,但这似乎不会影响输出窗口。也没有把它放在让我们慢下来的领域之前:

Debug.Listeners.Clear()

关闭输出窗口也无济于事。虽然它在发布模式下运行得非常快。

任何帮助表示赞赏!

4

2 回答 2

4

我可以为 Visual Studio 2013 回答这个问题:

在 VS 2013 中,您可以转到 DEBUG 菜单 - 选项和设置... - 调试 - 输出窗口。在“常规输出设置”下,您可以找到“异常消息”。把它关掉。

于 2015-06-16T07:36:30.863 回答
1

根据@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;
}

谢谢!

于 2012-06-05T18:07:08.180 回答