我有一个类与查询字符串参数等建立一个网址。该类有一个方法:Url()它返回由类属性和另一个方法组成的完整URL:UrlNew(),它允许传递谓词作为参数来替换其中一个属性的值,然后返回修改后的URL 。现在,我需要修改这个函数来使用两个谓词的参数。我怎么做?我试图修改方法的参数谓词的列表,但我可能不是在做正确的事情:在函数参数中使用多个谓词?
我的老UrlNew()方法是这样的:
public static string Url() (Action<LGUrlBuilder> predicate)
{
var instance = new LGUrlBuilder();
if (predicate != null) predicate(instance);
return instance.BuildUrl();
}
我的新UrlNew()方法看起来像这样:
public static string UrlNew(List<Action<LGUrlBuilder>> predicateList)
{
var instance = new LGUrlBuilder();
if (predicateList != null && predicateList.Count > 0)
{
foreach (Action<LGUrlBuilder> predicate in predicateList)
{
if (predicate != null) predicate(instance);
}
}
return instance.BuildUrl();
}
这编译就好了,但是当我运行它,在使用ASPX它给了我这个错误:
CS1660: Cannot convert lambda expression to type 'System.Collections.Generic.List<System.Action<public_site.Library.LG.LGUrlBuilder>>' because it is not a delegate type
我是C#初学者,我确信我正在做一些完全错误的事情。任何建议都会有帮助。谢谢!
只是一句话:Action是* not *谓词,因此您可能会考虑将参数名称更改为更合适的内容。 – Groo 2009-10-11 21:21:31