我有一个通用的ServiceResult<T>
类,可以在服务层中使用该类来提供包装在基本信息中的通用返回类型,以支持添加错误以及调用是否成功等。
在使用我的服务时,我现在拥有一个电子邮件服务,该服务当前返回一个实现IDisposable接口的MailMessage。我不太确定如何构造我的类以处理此问题,因为我最终希望将服务调用包装在using语句中,以确保正确处理了泛型类型,但是当前我布置一次性实现的方式是“相当削减。这样简单吗,即使包装类本身没有什么可设置的,添加一个附加子句以使类本身实现IDisposable即可。
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
}
答案 0 :(得分:4)
该类应声明为
public class DisposableServiceResult<T> : IDisposable where T : IDisposable