<type1> '<typename>' должен реализовывать '<membername>' для интерфейса '<interfacename>' - PullRequest
0 голосов
/ 21 апреля 2009

У нас есть решение веб-службы в VB .Net 2005, в котором мы начали получать ошибку. Мы предоставляем интерфейс, подобный следующему:

Public Interface IBatchTrackerService
    Function InsertBatchTracker(ByVal BatchTrackerObject As BatchTracker, ByRef errorNum As Integer, ByRef errorMsg As String) As Integer
End Interface

В нашем классе мы реализуем этот интерфейс со следующим кодом.

    Public Class BatchTrackerService
        Implements IBatchTrackerService

        Public Function InsertBatchTracker(ByVal BatchTrackerObject As BusinessObjects.BatchTracker, ByRef errorNum As Integer, ByRef errorMsg As String) As Integer Implements IBatchTrackerService.InsertBatchTracker
           'Some code here'
        End Function
    End Class

Этот код работал правильно, но теперь начал вызывать ошибки. Ошибка, которую мы получаем:

Class 'BatchTrackerService' must implement 'Function InsertBatchTracker(BatchTrackerObject As BusinessObjects.BatchTracker, ByRef errorNum As Integer, ByRef errorMsg As String) As Integer' for interface 'IBatchTrackerService'.  

Странно то, что проект компилируется правильно, но показывает много таких ошибок после завершения компиляции.

Недавно мы установили Panda для защиты от вирусов, что вызвало другую ошибку, для которой я нашел решение.

Любая помощь будет принята с благодарностью.

Спасибо.

Обновлено 21.04.2009 в 11:50
И интерфейс, и реализация находятся в одном проекте в решении.

Обновлено 22.04.2009 в 08:16
Я попытался удалить идентификатор BusinessObjects перед типом BatchTracker, но все равно получаю то же самое. Это только один пример того, что произошло во всем решении. Каждая реализация в этом BatchTrackerService помечается как ошибка, плюс есть несколько других служб, которые почти каждую реализацию также помечают как ошибку. Но как-то проект успешно строится, и да, он работает правильно!
Что касается BusinessObjects, он содержит много классов, которые мы используем в качестве параметров, и это просто еще один проект в этом решении. Мы не ссылаемся на какие-либо внешние сборки для предоставления этих классов BusinessObjects.

Обновлено 22.04.2009 в 08:24
Последнее, что я заметил, было то, что любая функция / процедура, которая не использует класс BusinessObjects в качестве параметра, а просто использует строки, целые числа и т. Д., Не помечается как ошибка.

Обновлено 22.04.2009 в 09:50
Я попытался вернуться к предыдущей версии, и мне удалось скомпилировать, и количество ошибок осталось на нуле. Я сузил его до регистрации одного из файлов проекта, где ссылка на BusinessObjects была слегка изменена. Я вернул только этот файл проекта, и теперь все прекрасно. Спасибо всем за то, что привели меня в правильном направлении.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2009

Ваш интерфейс указывает, что параметр "BatchTrackerObject" имеет тип "BatchTracker", но ваша реализация использует тип "BusinessObjects.BatchTracker". Попробуйте удалить «BusinessObjects». квалификатор из вашей реализации.

Предоставляют ли несколько сборок классы в пространстве имен BusinessObjects?

0 голосов
/ 21 апреля 2009

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

...