好吧,所以我知道你不能在一個靜態類中的對象,但我需要一個類,我可以容納可從不同類訪問的對象。我正在製作一個dll,它將爲另一個程序提供擴展功能,所以我不能僅僅繼承或傳遞類。如果需要的話,我可能只是可能使每個對象的屬性,我需要在靜態類,這將工作,但沒有像我想的那樣友好。任何人有任何其他想法如何完成這樣的事情?全局靜態類與對象
全局靜態類與對象
回答
實際上,您可以讓對象處於靜態類 - 它們只需要是靜態對象。
例如:
public static class SharedObjects
{
private static MyClass obj = new MyClass();
public static MyClass GetObj()
{
return obj;
}
}
並從程序的其它地方,你可以調用實例方法/屬性/等:
SharedObjects.GetObj().MyInstanceMethod();
以及我沒有嘗試,但我得到這個錯誤,是什麼把我帶到這裏: 所以這就是爲什麼我認爲你不能在你的靜態類 錯誤可訪問性不一致的對象:返回類型「myNameSpace對象。 MyClass'比方法'MyNameSpace.StaticClass.GetObj()' – cferbs 2010-08-03 19:28:39
更方便。在這種情況下,檢查MyClass的訪問修飾符。它需要公開而不是私人或內部。 – Manfred 2010-08-03 19:31:57
@cferbs正如Manfred所說的,確保'MyClass'被聲明爲'public class MyClass'。 – Justin 2010-08-03 19:32:24
一種選擇是有一個與存取方法訪問類一個靜態對象(或多個對象)。系統的其他部分可以使用該類作爲靜態或非靜態。這裏是代碼:
public class GlobalInformation {
public static GlobalInformation CreateInstance() {
// Factory method through GlobalInformmation.CreateInstance()
return new GlobalInformation();
}
public GlobalInformation() {
// Regular use through new GlobalInformation()
}
static GlobalInformation() {
// Static initializer called once before class is used.
// e.g. initialize values:
_aString = "The string value";
}
public string AccessAString {
get {
return _aString;
}
}
public Foo AccessAnObject() {
return _anObject;
}
private static string _aString;
private static readonly Foo _anObject = new Foo();
}
您的系統的其他部分將使用它如下。選項1:
var globalInfo = GlobalInformation.CreateInstance();
var aString = globalInfo.AssessAString;
var anObj = globalInfo.AccessAnObject();
選項2:
var globalInfo = new GlobalInformation();
var aString = globalInfo.AssessAString;
var anObj = globalInfo.AccessAnObject();
選項2將是我的首選一個(我會刪除靜態工廠方法CreateInstance()
),你可以隨時更改的實施,包括使(一些)字段是非靜態的。它會出現是一個普通的班級,同時共享數據。
- 1. 靜態全局對象
- 2. 非靜態全局對象VS全局指針到動態對象
- 3. 靜態全局變量V靜態全局類變量
- 4. 在靜態類中使用C#中的全局對象
- 5. 靜態類對象
- 6. 全局靜態動態分配對象C++
- 7. 靜態局部變量和靜態局部對象初始化
- 8. 如何定義全局靜態類?
- 9. 如何實現全局靜態類
- 10. 靜態類和全局變量
- 11. 靜態PHP類中的全局變量
- 12. PHP中的全局與靜態變量
- 13. 全局「類對象」或全局「服務器對象」
- 14. 靜態成員vs靜態全局
- 15. 全局對象與否?
- 16. 在靜態方法中訪問全局類的全局方法
- 17. 靜態類或對象
- 18. 類的靜態對象?
- 19. 靜態單例類對象
- 20. 靜態對象與Visual Studio
- 21. C++靜態全局對象解決方法?
- 22. Javascript,從靜態函數打印全局對象
- 23. 在內存中順序排列全局/靜態對象
- 24. 全局和靜態雙值
- 25. 在全局對象中定義的類中的Javascript靜態方法
- 26. PHP的性能:在會話中存儲類對象vs靜態vs全局
- 27. 注入與Angular 2的全局靜態類
- 28. '向全局類添加最終靜態常量後無法初始化全局對象'錯誤
- 29. 線程安全對象 - 是否靜態?
- 30. 靜態對象線程安全
您是否考慮過依賴注入和/或託管擴展性框架? – Robaticus 2010-08-03 19:11:56
你說第一句話的原因是什麼? – 2012-04-05 23:05:16
它實際上被命名爲Singleton模式。 – 2015-07-17 07:09:08