为了账号安全,请及时绑定邮箱和手机立即绑定

我只能在linqpad中为每个进程运行一次功能吗?

我只能在linqpad中为每个进程运行一次功能吗?

C#
慕娘9325324 2021-05-19 10:14:48
我有一个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();}


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信