2010-03-04 4 views
1

Вопрос: Я пытаюсь, чтобы преобразовать это здесь: http://support.microsoft.com/kb/828736 в VB.netИнтерфейс VB.net не будет компилироваться, почему?

Я получил его на работу в C#, и он должен работать без проблем в VB.NET, единственной проблемой является управляемым класс не компилируется, я получаю эту ошибку:
класс Error "ManagedClass" должен реализовать "Функция Add (number1 As Integer, number2 As Integer) As Integer" для ICalculator-интерфейса

Почему? Я вижу одну объявленную функцию, и один реализован, и что с теми же аргументами ... Что случилось?

Imports System 
Imports System.Collections.Generic 
Imports System.Text 

Namespace TestLibrary2 
' Interface declaration. 
Public Interface ICalculator 
    Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer 
End Interface 



' Interface implementation. 
Public Class ManagedClass 
    Implements ICalculator 
    Public Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer 
     Return Number1 + Number2 
    End Function 
End Class 


End Namespace 
+0

Добавлены утилиты ICalculator.Add и IT WORKS! –

ответ

5

В VB.Net, вы должны быть четко о вашей реализации интерфейса - это обеспечивает большую гибкость, чем C# (потому что вы можете назвать свои функции угодно), но это немного больше работы.

Поскольку оба Ханина и М.А. сам упомянул - это позволяет выбрать имена, но ни один из нас упомянул еще, почему вы можете захотеть сделать это. Например, если вы реализуете два интерфейса, которые определяют одно и то же имя метода. И вы хотите разоблачить оба этих метода как общедоступные методы в своем классе. В C# вам нужно создать хотя бы одну функцию «обертка», которая вызывает другую, чтобы добиться этого.

+0

Реализует ICalculator.Add. Арг ... Спасибо! –

2

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

Public Function Add(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer Implements ICalculator.Add 
     Return Number1 + Number2 
    End Function 
Смежные вопросы