在具有可处理的通用类型的类上实现IDisposable

5

我有一个通用的类,用于在我的服务层中提供基本信息包装的通用返回类型,以支持添加错误信息以及是否成功调用等功能。

通过处理我的服务,我现在有一个电子邮件服务,它当前返回实现了IDisposable接口的MailMessage对象。我不太确定如何构建我的类来处理这个问题,因为我最终希望将我的服务调用包装在using语句中,以确保正确释放泛型类型,但是当前我正在布置的可释放实现方式并不能完全解决这个问题。这只需要向类本身添加附加子句,即使对于包装类本身没有要释放的内容,也要实现IDisposable吗?

DisposableServiceResult类:

public class DisposableServiceResult<T> where T : IDisposable
{
    private List<string> Errors { get; } = new List<string>();
    private T _result;
    public T Result { get { return _result; } }

    // Other various properties and and methods

    public void Dispose()
    {
        _result.Dispose();
    }
}

服务调用:

using (var emailBuildResult = await services.emailBuilder.BuildEmailFromEntityAsync(client, "TemplateName", "myemail@email.com"))
{
    // do stuff here
}
1个回答

10

这个类应该声明为

public class DisposableServiceResult<T> : IDisposable where T : IDisposable

那无法编译。 - AceSyntax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接