Ответ 1
Похоже, вам не хватает ключевого слова params
...
public static DalRow EasyRetrieveSingle(this DalRow dalRow, params object[] parameters)
Является ли ключевое слово params действительно не поддерживаемым в методах расширения?
Я обнаружил, что когда я создаю методы расширения с ключевым словом params, я получаю "No overloaded method for X принимает 2 аргумента". Intellisense распознает метод расширения и даже знает, что ему нужен массив объектов.
Вот пример кода:
public static DalRow EasyRetrieveSingle(this DalRow dalRow, object[] parameters)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
for (int i = 0; i < parameters.Length; i += 2)
dic.Add(parameters[i].ToString(), parameters[i + 1]);
List<DalRow> list = DalRow.RetrieveByFieldValues(dalRow.Structure, null, dic).Cast<DalRow>().ToList();
if (list.Count == 0) return null;
return list[0];
}
Вот пример кода, который его вызывает (безрезультатно)
(new X()).EasyRetrieveSingle(1, 2);
Похоже, вам не хватает ключевого слова params
...
public static DalRow EasyRetrieveSingle(this DalRow dalRow, params object[] parameters)
В объявлении метода отсутствует ключевое слово params
.
public static DalRow EasyRetrieveSingle(
this DalRow dalRow, params object[] parameters)
↑
Это компилируется и работает отлично:
static class Extensions
{
public static void Test(this Program program, params object[] args) { }
}
class Program
{
static void Main()
{
new Program().Test(1, 5);
}
}