2011-02-18 18 views
-2

我有一個公共類這樣的:更改爲財產和靜態上下文(C#)

public class ClassN 
{ 
    public const int SomeInt = 16; 
    ... 
} 

這是從別的地方使用

int myInt = ClassN.SomeInt 

叫我現在必須改變16到更動態的東西,看起來像這樣:

public int SomeInt 
{ 
    get 
    { 
     //this method is not static and cant be changed to static 
     return GetIntDynamically();  
    } 
} 

當然,通話不再工作,因爲靜態上下文。我不能創建一個ClassN的新實例...還有什麼不違反編碼規則的選項?

感謝

+0

你爲什麼不能創建ClassN的新實例?如果你能解釋這個陳述背後的推理,我們可能會提出一些建議。 –

+2

我想你的意思是'公共靜態int SomeInt'?否則,非靜態方法調用沒有問題。 – Timwi

+0

@大衛:我指的是財產,而不是const領域。 – Timwi

回答

0

如果GetIntDynamically不是靜態的,不能進行靜態的,你沒有其他選擇,因爲創建的ClassN一個實例。

+0

問題是,在該方法中,我使用「this」,這在靜態上下文中是不允許的。 – grady

+1

的問題不在於使用'this'本身,而是使用'this'意味着你正在使用該方法的類的實例的其他成員。我認爲大衛在他的評論中是正確的:請解釋一下,爲什麼你不能創建一個ClassN的實例。 –

0

如果您無法創建ClassN的新實例,但您的方法依賴於使用this關鍵字的某個實例狀態,則需要在特定的已知實例ClassN上調用該方法。如果它是唯一的,那麼你可以考慮實現一個單例模式。如果它不是唯一的這種情況,那麼你需要參考你的調用代碼中可用的正確實例。正如我在評論中所說的,我們需要更多地瞭解您的情況以充分回答。然而,singleton模式可能是你所追求的......

0

這是你在找什麼?

public class ClassN 
{ 
    public static int SomeInt = 16;  
    ... 
}