【问题标题】:Does my UoW class need to implement IDisposable if my BaseUow already implements it? [duplicate]如果我的 BaseUow 已经实现,我的 UoW 类是否需要实现 IDisposable? [复制]
【发布时间】:2015-06-19 15:24:30
【问题描述】:

我为我的工作单元创建了一个名为 BaseUoW 的基类,它像这样继承 IDisposable:

public class BaseUoW : IDisposable
{
}

我的问题是...如果我创建一个名为 UserUoW 的类,例如继承我的 BaseUoW,那么 UserUoW 需要实现 IDisposable 还是由我的 BaseUow 处理

public class BaseUoW : IBaseUoW
{
}

或者

public class BaseUoW : IBaseUoW, IDisposable
{
}

IBaseUoW

public interface IBaseUoW
{
    virtual void Dispose(bool disposing);
    void Commit();
}

【问题讨论】:

  • 代码图片?不,请,不。
  • 答案完全取决于未显示的 IBaseUoW 接口
  • 我已经删除了你的图片并把它们变成了代码。请了解如何在 StackOverflow 上发布和格式化问题。
  • 感谢图片警察。
  • 注意:重复是基于帖子的标题,帖子的代码支持标题的声明,因为IBaseUoW不实现IDisposable。如果重复没有回答您的问题,请编辑您的帖子以澄清您的问题。 (考虑在您完成编辑后使用@alexei向我添加评论,以便我可以删除我的重复投票)。

标签: c# inheritance multiple-inheritance idisposable unit-of-work


【解决方案1】:

您不需要将其添加到类声明中,除非您想明确说明以提高可读性。

但是,您可能需要添加一个 protected virtual void Dispose(bool disposing){ 方法覆盖来执行子类的清理任务(如果有)。

请参阅here,了解有关应遵循的正确模式的更多信息。

编辑: 正如 cmets 中所指出的,只有当您真正从基础 BaseUoW 类扩展时,才会这样做。因为您的“图片”显示它实现了一些其他接口,而不是扩展您的基类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 2023-03-28
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多