как обрабатывать общее событие в классе VB.net в форме C # - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть код WCF на VB.net, который вызывает события.Эти события являются общими.Вот как это выглядит:

Shared Event onMissingSnapshots()

вот вызов:

 Public Shared Sub FireMissingSnapshots()
    RaiseEvent onMissingSnapshots()
End Sub

, который вызывается из обратного вызова WCF. Реализует:

Private Class StatusCallback
    Implements ServiceReference.TravelSequenceCallback

    Public Sub onMissingSnapshots() Implements ServiceReference.TravelSequenceCallback.onMissingSnapshots
        cWCF_Moteur.FireMissingSnapshots()
    End Sub
End Class

Теперь мне нужно интегрировать этокласс в проекте C # WinForm.Intellisense не увидит событие Shared, поэтому выдает ошибку, когда я пытаюсь добавить обработчик делегатов.Как я могу реализовать это событие в моем проекте C # ??

большое спасибо за ваше время и помощь

1 Ответ

0 голосов
/ 24 сентября 2018

Ваше мероприятие плохо реализовано, хотя я не уверен на 100%, что это является причиной вашей проблемы.Я просто попробовал следующее, и это сработало для меня.Я создал проект DLL в VB и добавил следующий код:

Public Class Class1

    Public Shared Event MissingSnapshots As EventHandler

    Protected Shared Sub OnMissingSnapshots(e As EventArgs)
        RaiseEvent MissingSnapshots(Nothing, e)
    End Sub

End Class

Это стандартный шаблон для объявления и вызова события, за исключением того, что вы обычно используете Me вместо Nothing в качестве отправителянапример, события.Кроме того, поскольку вы не можете переопределить метод Shared, нет смысла объявлять метод OnMissingSnapshots Overridable и действительно нет смысла объявлять его Protected.Это, вероятно, путь:

Public Shared Event MissingSnapshots As EventHandler

Private Shared Sub OnMissingSnapshots(e As EventArgs)
    RaiseEvent MissingSnapshots(Nothing, e)
End Sub

Public Shared Sub RaiseMissingSnapshots()
    OnMissingSnapshots(EventArgs.Empty)
End Su

Затем я добавил проект приложения C # WinForms к тому же решению и сослался на проект VB.Я смог добавить следующий код без проблем, в том числе с Intellisense:

using System;
using System.Windows.Forms;
using ClassLibrary1;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Class1.MissingSnapshots += Class1_MissingSnapshots;
        }

        private void Class1_MissingSnapshots(object sender, EventArgs e)
        {

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...