我有一个在VB.net中编码的WCF引发事件。这些事件是共享的。看起来像这样:
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#项目中实现这些事件?
非常感谢您的时间和帮助
答案 0 :(得分:1)
您的活动执行不力,尽管我不是100%确信这是造成您问题的原因。我只是尝试了以下方法,它为我工作。我在VB中创建了一个DLL项目,并添加了以下代码:
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)
{
}
}
}