1

一部のC#コードをVB .Netに変換しようとしていますが、一部のデルゲート変換で問題が発生しています。

BackupLibraries.cs

Public Class Backup
{
public event EventHandler<BackupPEventArgs> Backup;

...
if (BackupProgress != null) BackupProgress(this, new BackupProgressEventArgs(percent_complete))
...
}

public class BackupEventArgs : EventArgs
    {
        private float percentage;

        public BackupProgressEventArgs(float percentage)
        {
            this.percentage = percentage;
        }

        public float Percentage
        {
            get { return percentage; }
        }
    }

UnitTest.cs

public void BackupTest()
{
Backup bu = new Backup()
        bu.BackupProgress += delegate(object sender, Backup.BackupEventArgs e)

        {
            Debug.WriteLine("Percentage: " + e.Percentage.ToString());
        };
}

sb.Backup + =デリゲート(オブジェクト送信者、SQLBackup.BackupProgressEventArgs e)を変換し、問題が発生している他のクラスのイベントに接続します。

VBの場合:

Backuplibraries.vb

Public Class Backup

Public Event Backup As EventHandler(Of BackupEventArgs)

...
RaiseEvent Backup(Me, New BackupEventArgs(percent_complete))
...
End Class

Public Class BackupEventArgs
            Inherits EventArgs

UnitTest.vb

Public Class BackupTest

Dim bu As New Backup()

bu.BackupProgress = Sub(sender As Object, e As BackupEventArgs)
                         Debug.WriteLine(e.Percentage.ToString())
                         End Sub

End Class

もちろん

bu.BackupProgress = Sub(sender As Object, e As BackupEventArgs)
                             Debug.WriteLine(e.Percentage.ToString())
                             End Sub

C#から.Netへの変換で私が抱えている問題はここにあります。

4

1 に答える 1

2

ここでAddHandlerを試すことができます

AddHandler bu.BackupProgress, AddressOf Sub(sender As Object, e As BackupEventArgs)
                         Debug.WriteLine(e.Percentage.ToString())
                         End Sub

議論を巻き込むために、これはVB.Netでこのように匿名のままにすることはできません。固定アドレスを使用してメソッドを抽象化する必要があります。

Protected Sub BackupProgressDelegate(sender as Object, e as BackupEventArgs)
    Debug.WriteLine(e.Percentage.ToString())
End Sub

...

AddHandler bu.BackupProgress, AddressOf BackupProgressDelegate
于 2012-11-08T15:59:29.697 に答える