.net - 'System.Net.Mail.SmtpClient' 类型的“使用”操作数必须实现 'System.IDisposable' - (.NET 3.5)

标签 .net vb.net idisposable smtpclient

我需要将 .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(我更喜欢使用“使用”代码块来自动处置对象而不是旧式手动处置)

最佳答案

TryCastIDisposableUsing 之前怎么样:

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/

相关文章:

c# - 使用 C# 解压 tar 文件

.net - 将 OrderedDictionary 转换为 Dictionary<string, string> 的更好方法

vb.net - TryCast 翻倍?

c# - 处理 ImageList

c# - 是否可以强制将 "using"用于一次性类(class)?

c# - NUnit with night build,如何轻松获得错误?

.net - COM 与 native DLL

vb.net - 如何转义双引号作为 NUnit TestCase 的参数?

c# - 与人机接口(interface)设备 (HID) 通信的 VBA 代码

c# - 为非托管资源传递构造函数委托(delegate)或对象