我想重構在C#中切換case語句。 我已經使用了下面的代碼,它運行良好。但現在我必須改變代碼。一種方法有不同的簽名[它沒有參數],而其他方法只有一個參數。 有人可以幫我修改不同簽名方法的代碼嗎?使用Func而不是開關在C#中籤名不同的方法
Dictionary<string, Func<SqlDataReader, object>> methods = new Dictionary<string, Func<SqlDataReader, object>>();
methods = LoadMethodNames();
return methods[key].Invoke(reader); // key = A or B
private Dictionary<string, Func<SqlDataReader, object>> LoadMethodNames()
{
Dictionary<string, Func<SqlDataReader, object>> s= new Dictionary<string, Func<SqlDataReader, object>>();
s.Add("A", A);
s.Add("B", B); return s; }
private object A(SqlDataReader reader)
{
return new object;
}
private object B(SqlDataReader reader)
{
return new object;
}
現在的變化是方法B
private object B() { return new object; }
你不能將不同類型的'Func'放到一個集合中,因爲它們沒有任何*共同點。因此'Func'與'Func
是的,我試過這樣做。但SonarQube不允許我。它顯示爲一個主要問題:P 另外,如果將來我必須添加/刪除參數,它將會很有用。 – IamP
您不能修改方法簽名而不更改字典的聲明。但是,'Func'和'Func