C# から VB.NET に関連する C# コードは次のとおりです。
namespace MyApp {
public delegate bool AllocHandlerDelegate(int param1);
public interface ILoader {
event AllocHandlerDelegate evAlloc;
bool Load();
}
public class MyLoader : ILoader {
public event AllocHandlerDelegate evAlloc;
public bool Load() {
try {
if (this.evAlloc != null && !evAlloc(1))
return false;
}
}
}
これが私がこれまでに思いついたものです。C# デリゲートは、ブール値の結果を返す関数です。そこでデリゲート定義とイベント宣言を以下のように変換しました。
Public Delegate Function AllocHandlerDelegate(ByVal param1 As Integer) As Boolean
Public Event evAlloc As AllocHandlerDelegate
Visual Studio で次のエラー メッセージが返される: "戻り値の型を持つデリゲート型でイベントを宣言することはできません。"
代わりにSUBにして、このように翻訳を完成させました*。
Namespace MyApp
Public Delegate Sub AllocHandlerDelegate(ByVal param1 As Integer)
Public Interface ILoader
Event evAlloc As AllocHandlerDelegate
Function Load() As Boolean
End Interface
Public Class MyLoader
Implements ILoader
Public Event evAlloc As AllocHandlerDelegate Implements ILoader.evAlloc
Public Function Load() as Boolean Implements ILoad.Load
Try
If Me.evAllocEvent IsNot Nothing AndAlso Not evAlloc(1) Then
Return False
End Try
End Function
End Class
End Namespace
*注: 「イベント」オブジェクトが何もないことを確認できず、VB 内部デリゲート オブジェクト * EVENTNAME *Event を確認できないことに既に気付きました。
しかし、2番目の部分では、それをどうするかわかりません。そこで、次のエラー メッセージが表示されます。 「Public Event evAlloc (param1 As Integer)」はイベントであり、直接呼び出すことはできません。「RaiseEvent」ステートメントを使用してイベントを発生させます。
何か案は?!ありがとうございました