Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
FlegmaSpirit
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
#1

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

19.09.2015, 16:56. Просмотров 320. Ответов 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)".
Не могу понять, что это такое и с чем едят. Что за сигнатура и как её копать?
http://www.cyberforum.ru/vb-net/thread2232235.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2015, 16:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Хэндлер и сигнатура метода. Как описать? (Visual Basic .NET):

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

Сигнатура std::function и прототип метода
Добрый вечер, #include <functional> #include <string> #include <iostream>...

Как найти хэндлер рабочего стола?
рабочего стола, но кроме пуска. Чтобы потом используя его размеры развернуть...

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

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

4
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
19.09.2015, 18:10 #2
FlegmaSpirit,
Попробуй выкинуть вот это при объявлении Хэндлера
vb.net
1
New OrderToAloha.OrderToAloha.ResponseEventHandler
Так как по-моему это вообще там не в тему
0
OwenGlendower
Супер-модератор
Эксперт .NET
8748 / 7752 / 3318
Регистрация: 17.03.2014
Сообщений: 15,252
Записей в блоге: 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 / 20
Регистрация: 30.09.2013
Сообщений: 141
20.09.2015, 01:19  [ТС] #4
OwenGlendower, спасибо. Ошибка не совсем в этом заключалась, но нашел благодаря направлению, которое ты задал. Оказывается ByRef и ByVal были лишними. Их убрал и всё сложилось.
0
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

Описать применение метода итерации для уточнения корней уравнения
В работе требуется описать применение метода итерации для уточнения корней...

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

Сигнатура
Возможно ли как нибудь восстановить сигнатуру МК? И, кто пользовался...

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


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

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

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