相关疑难解决方法(0)

在失败的初始化程序或构造函数中处理iDisposable

.Net中是否有任何好的模式用于确保在构造期间抛出异常时可能会丢弃对象拥有的iDisposable字段,可能是在字段初始化期间?在Try/Catch块中包围字段初始值设定项的唯一方法是,如果块在构造函数的调用之外,这将使清理代码很难正确处理任何内容.

我能想到的唯一方法是从对象继承对象,该对象的构造函数采用类似于iDisposable的数组,并将该数组中的第一项设置为指向自身.所有构造函数的后代类应该是Private或Orotected,并包含该参数.实例化应该通过工厂方法,它将声明一个iDisposable的数组并将其传递给适当的构造函数.如果构造函数失败,那么工厂方法将引用部分构造的对象,然后它可以处理(当然,dispose方法必须准备好接受对象可能没有完全构造的可能性).

可以通过让对象保留它创建的iDisposable对象列表来扩展该方法,以允许清理对象而无需明确地处理每个对象; 这样的列表可以与factory-method-calls-dispose方法结合使用,但在很大程度上与它正交.

有什么想法吗?

.net constructor idisposable

6
推荐指数
2
解决办法
2254
查看次数

标签 统计

.net ×1

constructor ×1

idisposable ×1