【问题标题】:Implementing IDisposable on Class with Generic Type Where Generic Type Is Disposable在泛型类型为可处置的泛型类型的类上实现 IDisposable
【发布时间】:2019-06-12 19:00:09
【问题描述】:

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

在处理我的服务时,我现在有一个电子邮件服务,它当前返回一个实现 IDisposable 接口的 MailMessage。我不太确定如何构建我的类来处理这个问题,因为我最终想将我的服务调用包装在 using 语句中,以确保正确处理泛型类型,但我布置一次性实现的当前方式是' t 完全切割它。这是否就像添加一个附加子句让类本身实现 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
}

【问题讨论】:

    标签: c# class idisposable


    【解决方案1】:

    类应该声明为

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

    【讨论】:

    • 无法编译
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    相关资源
    最近更新 更多