Por lo tanto, el código siguiente solía funcionar en .NET 4 para obtener un objeto System.Net.Mail.MailMessage como un MemoryStream, sin embargo, con el lanzamiento de .NET 4.5 beta se produce una excepción de tiempo de ejecución.Obtención de System.Net.Mail.MailMessage como un MemoryStream en .NET 4.5 beta
Assembly assembly = typeof(SmtpClient).Assembly;
Type mailWriterType = assembly.GetType("System.Net.Mail.MailWriter");
using (MemoryStream stream = new MemoryStream())
{
ConstructorInfo mailWriterContructor = mailWriterType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(Stream) }, null);
object mailWriter = mailWriterContructor.Invoke(new object[] { stream });
MethodInfo sendMethod = typeof(MailMessage).GetMethod("Send", BindingFlags.Instance | BindingFlags.NonPublic);
sendMethod.Invoke(message, BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { mailWriter, true }, null);
.....
}
La excepción de tiempo de ejecución se produce en sendMethod.Invoke().
Cuál es la excepción (seguimiento de la pila puede ayudar)? –
La excepción fue esto: System.Reflection.TargetParameterCountException: desajuste en el conteo de parámetros. – dimoss
¿Ha comparado el código de .NET 4 con .NET 4.5 para ver si han dejado caer una sobrecarga de 'Enviar'? Sin duda, esto podría manejarse más simplemente con el uso de '' dinámico ''. –