我想創建一個在using()語句中調用存儲庫類的方法。該班目前不是一次性的。在實現IDisposable之前,我有什麼需要考慮的嗎?實施IDisposable時需要考慮哪些風險?
即
using(var repo = new RespositoryClass())
{
//do work
}
我想創建一個在using()語句中調用存儲庫類的方法。該班目前不是一次性的。在實現IDisposable之前,我有什麼需要考慮的嗎?實施IDisposable時需要考慮哪些風險?
即
using(var repo = new RespositoryClass())
{
//do work
}
僅僅因爲你使用一個類內部的IDisposable
對象並不意味着類需要實現IDisposable。
下面的示例類不需要實現IDisposable
。
class NotDisposable
{
public void someMethod()
{
using(SomethingDisposable resource = new SomethingDisposable())
{...}
}
}
這裏是一個類,將需要實現IDisposable
的例子。
class SomethingToDispose : IDisposable
{
private SomethingDisposable resource = new SomethingDisposable();
public void someMethod()
{
//code that uses resource
}
//code to dispose of "resource" in a Dispose method.
}
正如你在第二個例子中看到確實沒有任何地方讓全班把using
語句來處置資源。由於它將一次性對象存儲在一個字段中,並且它是負責處理它的人,因此確保它被丟棄的最佳方式是實現IDisposable
。
存儲庫類_does_需要一次性使用,因爲它使用'using'語句調用 – Ropstah 2012-04-23 15:57:04
atbyrd在Servy發佈此答案後,將問題更改爲包括'using'。 – 2012-04-23 17:22:11
爲什麼需要實現'IDisposable'?它使用一次性資源的事實並不意味着它需要實現'IDisposable'。 – Servy 2012-04-23 15:51:27
@Servy:將其作爲答案發布;這是正確的! – 2012-04-23 15:52:31
你的問題似乎很廣泛。我想不出任何具體的原因,我不知道你在擔心什麼,但這裏有一篇很好的文章,可以爲你的發展提供正確的信息。 http://www.codeproject.com/Articles/29534/IDisposable-What-Your-Mother-Never-Told-You-About – MilkyWayJoe 2012-04-23 15:52:33