Несоответствие количества параметров в расширении для 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)