Visual Studio无法识别IDisposable类型

时间:2016-07-28 08:38:26

标签: c# smtp

我有以下Email类,其中包含1个方法Send

using System.Net;
using System.Net.Mail;

static class Email
{
    const string EmailAddress = "JoeBloggs@domain.com";
    const string Subject = "Error Detected in Application";

    public static void Send(string body)
    {
        using (var client = new SmtpClient("mail.mailserevrname.com", 25)
            { Credentials = new NetworkCredential(), EnableSsl = false })
        {
            client.Send(EmailAddress,
                        EmailAddress,
                        Subject,
                        body);
        }
    }
}

我在多个应用程序中使用过此代码,我从来没有遇到任何问题(没有错误,电子邮件会在预期时发送)。

但是,在我当前的项目中,当我复制课程时,我看到了这个错误:

  

'SmtpClient':在using语句中使用的类型必须可以隐式转换为'System.IDisposable'

我从未见过上述代码产生的错误。我们还可以从the documentation看到SmtpClient确实实施了IDisposable

public class SmtpClient : IDisposable

有谁知道为什么现在出现此错误而不是我的其他应用程序?或者有谁知道调查这个问题的起点是什么?

1 个答案:

答案 0 :(得分:2)

正如@ J.Steen的评论指出的那样,在.NET Framework 3.5中,SmtpClient没有实现IDisposable

因此,解决方案是创建一个继承自SmtpClient并实现IDisposable的类,并在using中使用它。

编辑:

class Mailer: SmtpClient, IDisposable {
    //...
}

是实施IDisposable并继承自SmtpClient

的方式