使用通用类型在 Class 上实现 IDisposable,其中通用类型是一次性的
Implementing IDisposable on Class with Generic Type Where Generic Type Is Disposable
我有一个通用的 ServiceResult<T>
class,我在我的服务层中使用它来提供包装在基本信息中的通用 return 类型以支持添加错误,以及是否调用成功与否等
在使用我的服务时,我现在有一个电子邮件服务,目前 return 是一个实现 IDisposable 接口的 MailMessage。我不太确定如何构建我的 class 来处理这个问题,因为我最终想将我的服务调用包装在一个 using 语句中以确保正确处理通用类型,但我目前的布局方式是一次性实施并不能完全解决问题。这会像添加一个附加子句一样简单,让 class 本身实现 IDisposable,即使包装器 class 本身没有任何可处理的东西吗?
DisposableServiceResult Class:
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
}
class 应声明为
public class DisposableServiceResult<T> : IDisposable where T : IDisposable
我有一个通用的 ServiceResult<T>
class,我在我的服务层中使用它来提供包装在基本信息中的通用 return 类型以支持添加错误,以及是否调用成功与否等
在使用我的服务时,我现在有一个电子邮件服务,目前 return 是一个实现 IDisposable 接口的 MailMessage。我不太确定如何构建我的 class 来处理这个问题,因为我最终想将我的服务调用包装在一个 using 语句中以确保正确处理通用类型,但我目前的布局方式是一次性实施并不能完全解决问题。这会像添加一个附加子句一样简单,让 class 本身实现 IDisposable,即使包装器 class 本身没有任何可处理的东西吗?
DisposableServiceResult Class:
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
}
class 应声明为
public class DisposableServiceResult<T> : IDisposable where T : IDisposable