C# для VB.NET Вот соответствующий C# кодКак преобразовать это C# Событие/Делегат код в VB.NET (2008 или 2010)
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 внутренний делегат объекта * именем_события * Event.
Однако для второй части я не знаю, что с этим делать. Там появляется следующее сообщение об ошибке: «Открытое событие evAlloc (param1 As Integer)» является событием и не может быть вызвано напрямую. Используйте выражение «RaiseEvent», чтобы поднять событие.
Любые идеи ?! Спасибо