2016-07-18 4 views
1

Я новичок в программировании, когда я пишу код для конкретной функции, я нахожу это ниже ошибки. Пожалуйста, помогите мне решить эту ошибку.Аргумент типа для метода не может быть выведен из использования

public IList<ScoreCardListItemTO> UpdateDate(bool IsScoreCardUpdate, bool IsInputHeaderUpdate, long ScoreCardId, 
    long ScoreCardSubmitResponseId, long QuestionId, DateTime UpdatedOn) 
{ 
    var parameters = new[] 
    { 
     new ObjectParameter("IsScoreCardUpdate", IsScoreCardUpdate), 
     new ObjectParameter("IsInputHeaderUpdate", IsInputHeaderUpdate), 
     new ObjectParameter("ScoreCardId", ScoreCardId), 
     new ObjectParameter("ScoreCardSubmitResponseId", ScoreCardSubmitResponseId), 
     new ObjectParameter("QuestionId", QuestionId), 
     new ObjectParameter("UpdatedOn", UpdatedOn), 
    }; 

    ObjectResult items = ExecuteEqmFunction("SyncUpdateOnColumn", string.Empty); 
    return items; 
} 

шоу ошибка на этой линии

ObjectResult items = ExecuteEqmFunction("SyncUpdateOnColumn", string.Empty); 
return items; 

состояние ошибки, что

Ошибка 42 Аргументы типа для метода «EQM.DataLayer.EqmRepository.ExecuteEqmFunction (строка, string, params System.Data.Objects.ObjectParameter []) 'не может быть , вытекающих из использования. Попробуйте явно указать аргументы типа.

+0

вам нужно показать метод 'ExecuteEqmFunction', который, скорее всего, является общим методом. – user3185569

ответ

2

Подобно тому, как он говорит, ExecuteEqmFunction ожидает 3 или 4 аргумента, из которых вы снабжали первые 2.

Попробуйте

ObjectResult items = ExecuteEqmFunction("SyncUpdateOnColumn", string.Empty, parameters); 

мне не хватает контекста, но я не знаю, почему иначе вы бы построили parameters в этой области, если не поставляете его.

+0

Не использует 'params' делает третий параметр дополнительным массивом аргументов? Если один параметр отсутствует, компилятор не генерирует * не может быть выведен из ошибки использования * AFAIK. – user3185569

+0

Да, я тоже это думал. Но, судя по лишнему пространству, я чувствую, что ОП или кто-то испортил третий параметр, который когда-то был там, или ОП неопытен и не дал нам точно код, который породил ошибку, но код, который он был в процессе игры с. Не уверен. –

+0

Эта ошибка показана для общих методов. Поскольку 'T' не является частью параметров (что является единственным способом, который должен быть выведен компилятором), он должен явно указать аргумент типа для этого общего метода. – user3185569

1

Как я нашел в определении ошибки при редактировании вашего вопроса , потому что иначе не видно.

Метод ExecuteEqmFunction<T> является общим и ожидает тип T. Общий метод выводит тип только из аргументов, которые вы передаете. Так как у вас нет ни одного аргумента с типом T, вам необходимо указать этот тип явно:

ObjectResult items = ExecuteEqmFunction<ObjectResult>("SyncUpdateOnColumn", 
                   string.Empty, parameters); 

Предполагая T является типом возвращаемого значения для этого метода.

+0

Ницца.     –

Смежные вопросы