private ComplexAdvertismentsQuery QueryForm1(string searchQuery)
private ComplexAdvertismentsQuery QueryForm2(string searchQuery)
private ComplexAdvertismentsQuery QueryForm3(string searchQuery)
private ComplexAdvertismentsQuery QueryForm4(string searchQuery)
...
然后我检查
query = QueryForm1(searchQuery);
if (query != null)
{
}
query = QueryForm2(searchQuery);
if (query != null)
{
}
我可以让这个动态吗?
我看这里http://msdn.microsoft.com/en-us/library/exczf7b9.aspx并尝试使用Type,但这不是类,它是jut方法。
答案 0 :(得分:1)
您可以使用一系列强类型委托来执行此操作,并对其进行迭代以执行所有方法。
var listOfQueries = new List<Func<string, ComplexAdvertismentsQuery>> {
QueryForm1, QueryForm2, QueryForm3, QueryForm4
};
foreach (var queryForm in listOfQueries) {
var query = queryForm(searchQuery);
if (query != null) {
// do something
}
}
如果需要,您可以使用反射填充列表并为每个列表获取相应的委托,并只支付一次反映的费用。
此方法的缺点是您的所有方法必须具有相同的原型(此处为ComplexAdvertismentsQuery method(string)
)。