2010-07-20 40 views
0

public abstract class AbstractDBConnector { private AdServiceDB db;C#是否可以在靜態方法中使用DB對象引用?

public AdServiceDB Adapter 
    { 
     get 
     { 
      if (db == null) db = new AdServiceDB(); 
      return db; 
     } 
    } 
} 

和從它繼承的類:

public class BaseDataValidator : AbstractDBConnector 
{ 
    public static bool Check() 
    { 
     var t = Adapter.Users.Where(x=>x.Id<10).ToList(); //the error is here 
     return true; //example 
    } 
} 

此代碼顯然生成錯誤:的對象引用是所必需的非靜態字段,方法或屬性它甚至在靜態方法中使用適配器可能會有竅門嗎?

回答

1

只有適配器也是static,你可能不希望它是(但也許你做,我不確定確切的用例是什麼,沒有足夠的信息)。如果方法必須是static,則將適配器作爲參數傳遞給該方法,但看起來更可能是您的方法不應該是static

編輯:請注意,對於「使其static的方法來工作,你就必須使雙方Adapterdbstatic

+0

OK,但如果我設置適配器作爲一個靜態屬性,然後(IMO)它不應該被用在一個Web項目中(在最近的情況下) – Tony 2010-07-20 18:10:06

+1

是的,這就是爲什麼我開始說這可能是一個糟糕的主意,它會讓你回到我原來的建議,要麼讓方法不是靜態的或者將適配器傳遞給它。 – Donnie 2010-07-20 18:27:52

相關問題