被賦予任務將VS2005中編寫的.net 2的一些代碼升級到使用VS2010的.net 4。當試圖編譯代碼時,我發現了錯誤:使用委託在一個匿名方法in.net 4
無法轉換匿名方法委託類型「AssignParameter」因爲參數類型不匹配的委託參數類型
有問題的編譯代碼錯誤所指向的是:
AssignParameter ap = delegate(Database db, DbCommand cmd)
{
db.AddInParameter(cmd, _jobIDParameterString, DbType.Int32, jobid);
};
DatabaseHelper.LoadDataSet(ap);
所以我跟蹤代碼的位置,該委託引用生活:
public delegate void AssignParameter(Database db, DbCommand cmd);
public class DatabaseHelper
{
private static Database msSqlDb;
public static DataSet LoadDataSet(AssignParameter parameter)
{
...
DbCommand command = ...
// Assign parameter
if (parameter != null)
{
parameter(msSqlDb, command);
}
...
}
}
所以我讀過,委託關鍵字不能以這種方式
http://staceyw1.wordpress.com/2007/12/22/they-are-anonymous-methods-not-anonymous-delegates/
可以使用,但仍然在努力理解如何解決我的問題。
我試圖
- 鑄造委託
- 創建一個新的AssignParameter呼叫,但問題還有,我沒有任何數據庫或對象的DbCommand提供
你有什麼如何解決這個問題的建議?
用'(db,cmd)=>'替換'委託(數據庫db,DbCommand cmd)'' – itsme86 2014-09-23 15:45:33
@ itsme86他使用的語法沒有問題。你的建議在功能上是等同的。 – Servy 2014-09-23 15:50:01
這篇博文是關於將匿名委託分配給一個類型爲'Delegate'的變量,它並沒有說'delegate'關鍵字不能用這種方式。 – svick 2014-09-23 15:53:42