Vì vậy, đoạn mã dưới đây được sử dụng để làm việc trong .NET 4 để có được một đối tượng System.Net.Mail.MailMessage như là một MemoryStream, tuy nhiên với bản phát hành của .NET 4.5 beta một ngoại lệ thời gian chạy xảy ra.Lấy System.Net.Mail.MailMessage làm một MemoryStream trong .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);
.....
}
Ngoại lệ thời gian chạy xảy ra trên sendMethod.Invoke().
trừ (stack trace có thể giúp) là gì? –
Ngoại lệ là: System.Reflection.TargetParameterCountException: Số tham số không khớp. – dimoss
Bạn đã so sánh mã .NET 4 với .NET 4.5 để xem liệu chúng có giảm quá tải 'Gửi' không? Điều này chắc chắn có thể được xử lý đơn giản hơn với việc sử dụng 'dynamic'. –