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

我有一个Ninject IoC容器,其中包含许多绑定。我正在绑定我的linqpad脚本。


但是,当我尝试多次运行时,此操作将失败,因为在第二次运行中,同一类型将存在多个绑定,因此,当我尝试从IoC容器获取时,它将失败。


我是否从Ninject使用了应用程序启动或初始化函数,因此绑定仅发生一次?


例如,在MVC程序中,我将使用Application_Start()


示例:在该程序中,每次运行程序时,输出计数都会增加。是否可以挂入应用程序启动事件以重置计数?


我的实际需要是防止ninject内核的双重绑定,所以请不要使用任何解决单例的“解决方案”,我知道这不是线程安全的!


void Main()

{

    {

        var x = Singleton.Instance;

        Console.WriteLine(x.count++);

    }

}


// Define other methods and classes here


public 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;

        }

    }

}


慕娘9325324
浏览 137回答 1
1回答

呼如林

我没有意识到LinqPad中的静态事件会发生这种情况。好发现。您是否尝试过Application_Start()使用与标记Singleton类似的方式在类中使用标记包装对的调用if(instance == null)。就像是...private static bool _initialised;public static void Initialise(){     if(_initialised)      return;     _initialise = true;     something.Application_Start();}
打开App,查看更多内容
随时随地看视频慕课网APP