Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
FlegmaSpirit
39 / 40 / 19
Регистрация: 30.09.2013
Сообщений: 141
#1

Хэндлер и сигнатура метода. Как описать? - Visual Basic .NET

19.09.2015, 16:56. Просмотров 263. Ответов 4

Добрый день всем.

Есть у меня кусочек кода:

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Imports OrderToAloha
Imports OrderToAloha.OrderToAloha
Imports DataReciver
 
Module Modul4Aloha
 
    Public Sub Main()
        Dim OA As New OrderToAloha.OrderToAloha
        Dim req As New DataReciver.SendOrderToAlohaRequest
        AddHandler OA.ResponseEvent, New OrderToAloha.OrderToAloha.ResponseEventHandler(AddressOf OA_ResponseEvent)
 
        Try
              [...]
        Catch ex As Exception
              MessageBox.Show(ex.Message)
        End Try
 
 
    End Sub
 
 
    Private Function OA_ResponseEvent(ByRef sender As Object, ByVal e As DataReciver.AlohaResponse)
        If e.ResultId = 0 Then
            MessageBox.Show(e.Err)
        Else
            MessageBox.Show(e.AlohaTableNum.ToString())
        End If
 
        sender.CloseConnection()
        Return Nothing
    End Function
End Module

Так вот на строчке, где я добавляю хэндлер, мне студия пишет вот такую ошибку:

Ошибка 1 Метод "Private Function OA_ResponseEvent(ByRef sender As Object, e As DataReciver.AlohaResponse) As Object" не имеет сигнатуры, совместимой с делегатом "Delegate Sub ResponseEventHandler(sender As Object, e As DataReciver.AlohaResponse)".
Не могу понять, что это такое и с чем едят. Что за сигнатура и как её копать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2015, 16:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хэндлер и сигнатура метода. Как описать? (Visual Basic .NET):

Что такое сигнатура метода? - C#
Ребят,подскажите,что такое сигнатура метода?Всё уже облазил,но не получил толкового ответа

Сигнатура std::function и прототип метода - C++
Добрый вечер, #include <functional> #include <string> #include <iostream> using namespace std; class A { ...

Как правильно описать метод внутри другого метода одного и того же класса? - PHP ООП
Извияюсь за возможно глупый вопрос, но ООП тема для меня новая.Вот так выглядел метод класса в начале: public function...

Как сигнатура узнает какие байты РЕ файла соответствуют ее частям? - Assembler
КАК сигнатура узнает какие байты РЕ файла соотвецтвуют ее частям? К примеру, я хочу начать разбор файла. Отсчитывать байты равными...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода - C#
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Сигнатура - AVR
Возможно ли как нибудь восстановить сигнатуру МК? И, кто пользовался AVRFuseDoctor'ом, возможно ли через UART выставить чип (если битая...

4
Yury Komar
Модератор
2214 / 2019 / 321
Регистрация: 27.01.2014
Сообщений: 3,583
Завершенные тесты: 1
19.09.2015, 18:10 #2
FlegmaSpirit,
Попробуй выкинуть вот это при объявлении Хэндлера
vb.net
1
New OrderToAloha.OrderToAloha.ResponseEventHandler
Так как по-моему это вообще там не в тему
0
OwenGlendower
Модератор
Эксперт .NET
7411 / 6387 / 2377
Регистрация: 17.03.2014
Сообщений: 12,382
Записей в блоге: 1
19.09.2015, 20:00 #3
FlegmaSpirit, объяви OA_ResponseEvent как Sub и убери ByRef у аргумента sender

Цитата Сообщение от FlegmaSpirit Посмотреть сообщение
Не могу понять, что это такое и с чем едят. Что за сигнатура и как её копать?
Событие содержит в себе список обработчиков которые вызываются при генерации этого события. Данные обработчики должно иметь одинаковую сигнатуру: кол-во аргументов, их порядок и типы, а также, тип возвращаемого значения. Сигнатуры описываются с помошью делегатов. Событие ResponseEvent объявлено с использованием делегата
vb.net
1
Sub XYZ(ByVal sender As Object, ByVal e As DataReciver.AlohaResponse)
Твой метод имеет сигнатуру
vb.net
1
Function XYZ(ByRef sender As Object, ByVal e As DataReciver.AlohaResponse)
Попробуй найти отличия.

Добавлено через 4 минуты
Цитата Сообщение от Yury Komar Посмотреть сообщение
Попробуй выкинуть вот это при объявлении Хэндлера
Это всего лишь создание экземпляра делегата. Абсолютно допустимая конструкция. Без нее можно обойтись т.к. компилятор сам добавит вызов нужного конструктора, но причина ошибки не в этом.
2
FlegmaSpirit
39 / 40 / 19
Регистрация: 30.09.2013
Сообщений: 141
20.09.2015, 01:19  [ТС] #4
OwenGlendower, спасибо. Ошибка не совсем в этом заключалась, но нашел благодаря направлению, которое ты задал. Оказывается ByRef и ByVal были лишними. Их убрал и всё сложилось.
0
Yury Komar
Модератор
2214 / 2019 / 321
Регистрация: 27.01.2014
Сообщений: 3,583
Завершенные тесты: 1
20.09.2015, 01:33 #5
FlegmaSpirit, так он ведь про ByRef и ByVal тебе и говорил, просто подробно описал.
0
20.09.2015, 01:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2015, 01:33
Привет! Вот еще темы с ответами:

Сигнатура - Java SE
Есть два впороса. 1. Правильно ли я знаю, сигнатурой метода в Java называются : название метода, параметры, которые метод возвращает и...

Сигнатура методов - JavaScript
Вечер добрый, народ как вы определяете какой метод что возвращает, например в справке...

C++ 7z архив(сигнатура) - C++ WinAPI
Доброго всем дня. Использовал для архивации одного файла библиотеку 7z. В файле LzmaUtil.c есть функция, которая формирует что-то вроде...

Тип-сигнатура - Haskell
Всем привет. Прошу помочь, разобраться в сингнатуре следующей функции: foo a b e f = show a foo a b (c:d) e f | a==c, read b = e...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru