Как конвертировать эти методы из C # в VB.net (Windows Phone 7) - PullRequest
0 голосов
/ 19 марта 2012

Привет! Я смотрю учебник, в котором используется камера, и я нашел несколько методов, которые мне нужны. Единственная проблема заключается в том, что они находятся в 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 «Открытое событие инициализировано (отправитель как объект, e как System.EventArgs)» - это событие, которое не может быть вызвано напрямую. Используйте оператор RaiseEvent, чтобы вызвать событие.

В терминах второго метода. Он не выглядит так, как будто был правильно конвертирован, хотя ошибок нет

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

В качестве состояния ошибки необходимо использовать RaiseEvent;преобразователи кода не знают, является ли это на самом деле событием или делегатом.И, конечно же, поскольку VB.NET - удивительный язык, вам не нужно проверять Is Nothing, New Object(-1) {} или New Object() до {value}.

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
.
0 голосов
/ 19 марта 2012

Измените его на

RaiseEvent Initialized(Me, EventArgs.Empty)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...