我需要将 .NET 4.0 项目转换为 .NET 3.5 项目, 除了“SmtpClient”之外,其他一切都很好 到目前为止,我发现 .NET 3.5 SmtpClient 没有实现 IDisposable,而在 .NET 4.0 中却实现了!
以下是在 .NET4.0 上运行良好但在 .NET3.5 上运行良好的代码:
Using MailServer As New SmtpClient(MailServerName)
MailServer.Credentials = New System.Net.NetworkCredential(MailServerUserName, MailServerPassword)
SendMail(MailServer, msgBody, msgSubject, FromEmail, ToEmail)
End Using
知道如何使用 .NET 3.5(我更喜欢使用“使用”代码块来自动处置对象而不是旧式手动处置)
最佳答案
TryCast
到 IDisposable
在 Using
之前怎么样:
Dim MailServer As New SmtpClient(MailServerName)
Using TryCast(MailServer, IDisposable)
MailServer.Credentials = New System.Net.NetworkCredential(MailServerUserName, MailServerPassword)
SendMail(MailServer, msgBody, msgSubject, FromEmail, ToEmail)
End Using
如果在 .NET 4.0 中运行,TryCast()
会返回 SmtpClient
,因为它实现了 IDisposable。
如果在 .NET 3.5 中运行,TryCast()
返回 Nothing
并且 Using
被忽略。
.NET 3.5 中的 SmtpClient
似乎不需要任何清理,因为它们没有提供 Dispose()
或任何其他清理方法据我所知。
关于.net - 'System.Net.Mail.SmtpClient' 类型的“使用”操作数必须实现 'System.IDisposable' - (.NET 3.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524466/