如何将这些方法从C#转换为VB.net(Windows Phone 7)

时间:2012-03-18 21:07:56

标签: c# vb.net windows-phone-7

嗨,我正在看一个使用相机的教程,我遇到了一些我需要的方法。唯一的问题是它们在C#中,我需要它们在VB中。我使用过转换器但它没有正确转换它。

private void VideoCamera_Initialized(object sender, object eventArgs)
{
    if (Initialized != null)
    {
        Initialized.Invoke(this, new EventArgs());
    }
}

public bool LampEnabled
{
    get { return (bool)_videoCameraLampEnabledPropertyInfo.GetGetMethod().Invoke(_videoCamera, new object[0]); }
    set { _videoCameraLampEnabledPropertyInfo.GetSetMethod().Invoke(_videoCamera, new object[] { value }); }
}

以下是转换后的代码和错误:

Private Sub VideoCamera_Initialized(sender As Object, eventArgs As Object)
    If Initialized IsNot Nothing Then
        Initialized.Invoke(Me, New EventArgs())
    End If
End Sub

Public Property LampEnabled() As Boolean
    Get
        Return CBool(_videoCameraLampEnabledPropertyInfo.GetGetMethod().Invoke(_videoCamera, New Object(-1) {}))
    End Get
    Set(value As Boolean)
        _videoCameraLampEnabledPropertyInfo.GetSetMethod().Invoke(_videoCamera, New Object() {value})
    End Set
End Property

错误:

  

错误2'公共事件已初始化(sender As Object,e As System.EventArgs)'是一个事件,无法直接调用。使用'RaiseEvent'语句来引发事件。

就第二种方法而言。即使没有任何错误,它看起来也没有被正确转换

2 个答案:

答案 0 :(得分:2)

如错误所述,您需要使用RaiseEvent;代码转换器不知道它实际上是一个事件,还是它是一个委托。当然,由于VB.NET是一种很棒的语言,因此Is Nothing之前不需要New Object(-1) {}检查或New Object(){value}部分。< / p>

Private Sub VideoCamera_Initialized(sender As Object, eventArgs As Object)
    RaiseEvent Initialized(Me, EventArgs.Empty)
End Sub

Public Property LampEnabled() As Boolean
    Get
        Return CBool(_videoCameraLampEnabledPropertyInfo.GetGetMethod().Invoke(_videoCamera, {}))
    End Get
    Set(value As Boolean)
        _videoCameraLampEnabledPropertyInfo.GetSetMethod().Invoke(_videoCamera, {value})
    End Set
End Property

答案 1 :(得分:0)

将其更改为

RaiseEvent Initialized(Me, EventArgs.Empty)
相关问题