【发布时间】:2010-01-05 13:24:59
【问题描述】:
我有一个简单的问题。
我想装饰 SqlDataReader 类,以便在调用 dispose 或 close 方法时,我可以同时释放隐藏的资源。
SqlDataReader 类不可继承。
我怎样才能做到这一点?我真的不想实现 DbDataReader、IDataReader、IDisposable 和 IDataRecord 接口
【问题讨论】:
-
不可继承是什么意思?是密封类吗?你能详细说明一下接口吗?您不必实施这些吗?另外,你为什么不想呢?
-
SqlDataReader 不是密封的,所以它是可继承的,但它的构造函数是私有的,所以当你从它继承时你不能满足基本构造函数 - 我只是在细节上挑剔,但你是对的。
-
除了我对丝绸的回答的评论之外,我不禁想知道......你可能需要用
SqlDataReader打包什么?我真的希望它不是SqlCommand或SqlConnection... -
资源是一次性类的实例。它既不是 SqlCommand 也不是 SqlConnection 对象。该资源是来自票证池的票证,用于保护资源(在本例中为 Sql DB)
-
我讨厌自己这么想,但我想知道除了你的行为之外,是否有办法放置一个 IL 方法挂钩来调用原始的 Close 或 Dispose。我不适合尝试,只是提出一个想法。
标签: c#