【问题标题】:Implement IDisposable on partial LINQ to SQL entity classes在部分 LINQ to SQL 实体类上实现 IDisposable
【发布时间】:2009-05-14 08:26:59
【问题描述】:

我正在使用部分类扩展 LINQ to SQL 实体类,我想知道如何最好地将实体对象的某些属性重置为默认状态。

我的部分课程不使用非托管资源。据我所知; LINQ to SQL 实体类也没有。所以我想我会实现IDisposable 并处理Dispose() 内部属性的重置。

  • 您对这种方法有何看法?
  • 您会将前面提到的属性设置为 null 还是其他?

【问题讨论】:

    标签: c# linq-to-sql garbage-collection partial-classes


    【解决方案1】:

    无论好坏,IDisposable 几乎普遍与完成资源相关联,而不是重置它。这对我来说听起来很奇怪。我会创建一个Reset() 方法 - 或者在需要时创建一个新实例。这样做的目的是什么?你想达到什么目的?

    至于“在 GC 上抑制 [ing] 实例”- 你到底是什么意思?如果您在谈论终结器,我会在添加终结器之前非常仔细考虑 - 这很少是正确的方法。

    【讨论】:

    • 好吧,我正在尝试“完成”我的对象。不过,我只是不确定如何。我唯一能想到的就是重置对象。
    • 你为什么要这样做呢?让他们有资格进行垃圾收集并让事情顺其自然有什么问题?您希望看到什么好处?
    • 假设我在一个对象上调用 Remove()。该方法删除与数据库条目关联的对象。现在对象代表不再存在的东西(数据库中的条目)。我希望对象始终反映数据库条目——理想情况下,我希望对象在调用 Remove() 后为空
    • 对象本身不能为空。难道你不能相信你的调用者在删除对象后不引用它吗?这真的对你来说是个问题,还是你只是想预测问题​​?
    猜你喜欢
    • 2010-10-26
    • 2023-03-11
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多