在可使用泛型类型的泛型类型的类上实现IDisposable

时间:2019-01-18 13:39:59

标签: c# class idisposable

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

在使用我的服务时,我现在拥有一个电子邮件服务,该服务当前返回一个实现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 个答案:

答案 0 :(得分:4)

该类应声明为

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