所以,下面这段代码在 .NET 4 中可以用来获取一个作为 MemoryStream 的 System.Net.Mail.MailMessage 对象,但是在 .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);
.....
}
在 sendMethod.Invoke() 上发生运行时异常。
Send
的某个重载吗?使用dynamic
可以更简单地处理这个问题。 - M.Babcock