Я беру веб-сервис, написанный на VB и переписывающий его на C#. Класс сервиса реализует два интерфейса, каждый из которых имеет по четыре метода. Три из четырех методов имеют одно и то же имя метода подписи и список параметров. 4-й метод имеет то же имя, но другой список параметров.C# эквивалент реализации интерфейса VB.NET
В VB вы явно определяете методы интерфейса, связанные с методами класса публичного обслуживания. Таким образом, для методов, которые являются такими же, реализация выглядит следующим образом:
class WebServiceClass
{
Public Function Method1(result as Int32) As String Implements Interface1.Method1, Interface2.Method1
Public Sub Method2(Id as Int64, P3 as Int32) Implements Interface1.Method2
Public Sub Method3(In as Int64) Implements Interface2.Method2
}
Вы можете сделать это в C#?
Я знаю, что вы можете явно определять методы в классе веб-службы с интерфейсом. Method2 (Id как Int64, ...) и Interface2.Method2 (In as ...). Но это будет означать изменение имен этих методов, и поэтому любое приложение, использующее эти методы, должно быть обновлено.
Я также могу изменить имена методов интерфейса в соответствии с методами веб-службы, но любое приложение, использующее эти интерфейсы, должно быть изменено.
Есть ли кто-либо, чтобы явно идентифицировать метод интерфейса в классе веб-службы, но сохраняя методы класса веб-службы одинаковыми именами и подписями как оригинал?
Это отличный образец; явные реализации интерфейса, которые содержат значительное количество кода, часто являются анти-шаблонами в наследуемых классах, поскольку производные классы не могут их обернуть. Наличие явной реализации интерфейса просто соединяется с защищенным виртуальным методом делает вещи намного чище. – supercat
Не следует ли использовать метод1, метод2 и метод3? –
@GloriaSantin зависит от вашей ситуации и хотите ли вы, чтобы они были доступны другим экземплярам – JaredPar