【发布时间】:2010-02-17 16:14:01
【问题描述】:
我正在使用 C#.NET 进行编程。是否可以在不抛出异常的情况下中止类属性的设置过程?
这就是我想做的……
public int RandomProperty
{
set
{
DialogResult answer = new DialogResult();
answer = MessageBox.Show("This process could take up to 5 min. Are you sure you want to continue?");
if(answer = DialogResult.No)
CancelSet // Can I do something similar here?
else
{
...Do set procedure
}
}
}
我认为我不能使用方法(而不是属性),因为我正在使用 propertygrid 设置此值。
【问题讨论】:
-
您可能需要考虑将此作为方法而不是属性,例如 SetRandomProperty(int)。通常预计二传手会非常快。
-
你可以随时
return;,但实际上,set 函数不应该长时间运行,不应该需要用户输入(毕竟它已经有值),并且不应该抛出异常.你真的应该在一个单独的函数中拥有这个逻辑,而不是在一个 set 方法中。 -
@Everyone。我意识到在类属性中包含 UI 代码是个坏主意,但是我使用属性网格来设置此属性,并且实际上无法在 propertygrid 接口和它链接到的类之间插入 MessageBox 问题对吧?
-
也许这不是绑定到属性网格的好选择。你能设置属性,保存结果,让它立即返回,然后根据一些用户操作,运行你的长时间运行的操作吗?
标签: c# .net properties set abort