我有一個類與查詢字符串參數等建立一個網址。該類有一個方法: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