Несоответствие количества параметров в расширении для System.Net.Mail.MailMessage

Произошла ошибка при _sendMethod.Invoke. Вы знаете, как решить эту проблему? для этого есть код C#. Вроде нормально работает. однако это не работает прямо в vb.net. Мне нужно написать VB.NET для этого.

Это информация об исключении.

StackTrace: в System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, связыватель Binder, параметры Object[], культура CultureInfo) в System.Reflection.RuntimeMethodInfo.Invoke(объектный объект, параметры BindingFlags Binkder Bindinder), CultureInfo culture) в PIPEmail.MailMessageExt.Save(сообщение MailMessage, строковое имя файла)

Сообщение: "Несоответствие количества параметров".

Данные:{} System.Collections.ListDictionaryInternal

TragetSite:{System.Object[] InvokeArgumentsCheck(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)}

Public Sub Save(ByVal Message As MailMessage, ByVal FileName As String)
    Dim assembly As Assembly = GetType(SmtpClient).Assembly
    Dim _mailWriterType As Type = assembly.[GetType]("System.Net.Mail.MailWriter")

    Try



        Using _fileStream As New FileStream(FileName, FileMode.Create)
            ' Get reflection info for MailWriter contructor
            Dim _mailWriterContructor As ConstructorInfo = _mailWriterType.GetConstructor(BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, New Type() {GetType(Stream)}, Nothing)

            ' Construct MailWriter object with our FileStream
            Dim _mailWriter As Object = _mailWriterContructor.Invoke(New Object() {_fileStream})

            ' Get reflection info for Send() method on MailMessage
            Dim _sendMethod As MethodInfo = GetType(MailMessage).GetMethod("Send", BindingFlags.Instance Or BindingFlags.NonPublic)

            ' Call method passing in MailWriter
            **_sendMethod.Invoke(Message,
                               BindingFlags.Instance Or BindingFlags.NonPublic,
                               Nothing,
                               New Object() {_mailWriter, True},
                               Nothing
                               )**

            '_sendMethod.Invoke(Message, BindingFlags.Instance Or BindingFlags.NonPublic, Nothing,
            ' Finally get reflection info for Close() method on our MailWriter
            Dim _closeMethod As MethodInfo = _mailWriter.[GetType]().GetMethod("Close", BindingFlags.Instance Or BindingFlags.NonPublic)

            ' Call close method
            _closeMethod.Invoke(_mailWriter, BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, New Object() {}, Nothing)
        End Using


    Catch ex As Exception

    End Try
End Sub

Конечный модуль

1 ответ

Я добавил "True" в коде ниже, тогда он работает.

_sendMethod.Invoke (Сообщение, BindingFlags.Instance или BindingFlags.NonPublic, Nothing, New Object () {_mailWriter, True, True}, Nothing)

Другие вопросы по тегам