【发布时间】:2014-10-13 10:20:08
【问题描述】:
假设我有 10 个文本框,它们都有不同的值,但它们都是文本框。而且,我有一个方法CheckInputValue(Textbox tb)。现在,单击一个按钮,我想要检查所有文本框并确定该值是否允许的方法。
但我不想这样做:
void DoWork()
{
CheckInputValue(t1);
CheckInputValue(t2);
CheckInputValue(t3);
CheckInputValue(t4);
...
CheckInputValue(tx);
}
请注意:以上仅为示例。
我有一个复杂的方法,需要在多个相同类型的控件上执行,我有大约 25 个控件。有没有更优雅的方式来做到这一点? 谢谢。
【问题讨论】:
-
我认为您不应该验证控件内的数据。您应该验证视图模型中的数据。在这种情况下,您可以向视图模型的属性添加一个属性(即 [Validate]),当您需要时,您可以收集所有具有该属性的属性并验证值。
-
很难创建一组您想要评估的所有控件吗?这似乎是最困难的部分。
-
某些集合中的控件是否实现了
IEnumerable<T>? -
这是一个有趣的问题。我(但我也是初学者)会认为您必须在某个时候或其他时候进行写作,这取决于您要重复的部分。你可以例如将您要使用的所有文本框
CheckInputValue添加到List(或一些IEnumerable<TextBox>),然后使用foreach。这将具有(小)优势,您不必添加 every TextBox,而您似乎搜索的方法将在 all TextBoxes 上执行,并且可能有一些你不想被使用。 -
@IvanZub 这只是一个例子。我需要在几个控件上调用一个方法,我觉得像 Method(i1)、Method(i2)、Method(in) 这样调用方法 n 次不是很优雅。
标签: c# windows-phone-8 methods repeat