我有一个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 关注
- 136 浏览
添加回答
举报
0/150
提交
取消