我有一個Ninject IoC容器,其中包含許多綁定。我正在綁定我的linqpad腳本。但是,當我嘗試多次運行時,此操作將失敗,因為在第二次運行中,同一類型將存在多個綁定,因此,當我嘗試從IoC容器獲取時,它將失敗。我是否從Ninject使用了應用程序啟動或初始化函數,因此綁定僅發生一次?例如,在MVC程序中,我將使用Application_Start()示例:在該程序中,每次運行程序時,輸出計數都會增加。是否可以掛入應用程序啟動事件以重置計數?我的實際需要是防止ninject內核的雙重綁定,所以請不要使用任何解決單例的“解決方案”,我知道這不是線程安全的!void Main(){ { var x = Singleton.Instance; Console.WriteLine(x.count++); }}// Define other methods and classes herepublic class Singleton{ private static Singleton instance; private Singleton() { } public int count; public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); instance.count = 0; } return instance; } }}
1 回答

呼如林
TA貢獻1798條經驗 獲得超3個贊
我沒有意識到LinqPad中的靜態事件會發生這種情況。好發現。
您是否嘗試過Application_Start()
使用與標記Singleton
類似的方式在類中使用標記包裝對的調用if(instance == null)
。
就像是...
private static bool _initialised;public static void Initialise(){ if(_initialised) return; _initialise = true; something.Application_Start();}
- 1 回答
- 0 關注
- 154 瀏覽
添加回答
舉報
0/150
提交
取消