草庐IT

Singleton

全部标签

c# - 依赖注入(inject)与服务位置

我目前正在权衡DI和SL的优缺点。然而,我发现自己陷入了以下陷阱22,这意味着我应该只对所有内容使用SL,并且只将IoC容器注入(inject)每个类。DICatch22:有些依赖项,如Log4Net,根本不适合DI。我称这些为元依赖,并认为它们对于调用代码应该是不透明的。我的理由是,如果一个简单的类“D”最初是在没有日志记录的情况下实现的,然后增长到需要日志记录,那么依赖类“A”、“B”和“C”现在必须以某种方式获得这种依赖并将其从“A”到“D”(假设“A”组成“B”,“B”组成“C”,依此类推)。我们现在对代码进行了重大更改,因为我们需要登录一个类(class)。因此,我们需要一种

c# - 网络核心 : register implementation with multiple interfaces and lifestyle Singleton

考虑以下接口(interface)和类定义:publicinterfaceIInterface1{}publicinterfaceIInterface2{}publicclassMyClass:IInterface1,IInterface2{}有没有办法像这样用多个接口(interface)注册一个MyClass的实例:...services.AddSingleton();...并用像这样的不同接口(interface)解析MyClass的单个实例:IInterface1interface1=app.ApplicationServices.GetService();IInterface

c# - 网络核心 : register implementation with multiple interfaces and lifestyle Singleton

考虑以下接口(interface)和类定义:publicinterfaceIInterface1{}publicinterfaceIInterface2{}publicclassMyClass:IInterface1,IInterface2{}有没有办法像这样用多个接口(interface)注册一个MyClass的实例:...services.AddSingleton();...并用像这样的不同接口(interface)解析MyClass的单个实例:IInterface1interface1=app.ApplicationServices.GetService();IInterface

c# - C# 中有 "Empty List"单例吗?

在C#中,我经常使用LINQ和IEnumerable。一切都很好(或者至少大部分情况下是这样)。但是,在很多情况下,我发现自己需要一个空的IEnumerable作为默认值。也就是说,我想for(varxinxs){...}无需空检查即可工作。现在,这就是我目前所做的,具体取决于更大的上下文:varxs=f()??newX[0];//whenxsisassigned,sometimesfor(varxinxs??newX[0]){...}//inline,sometimes现在,虽然上面的内容对我来说完全没问题——也就是说,如果创建数组对象有任何“额外开销”,我只是不关心--我在想:C#

c# - C# 中有 "Empty List"单例吗?

在C#中,我经常使用LINQ和IEnumerable。一切都很好(或者至少大部分情况下是这样)。但是,在很多情况下,我发现自己需要一个空的IEnumerable作为默认值。也就是说,我想for(varxinxs){...}无需空检查即可工作。现在,这就是我目前所做的,具体取决于更大的上下文:varxs=f()??newX[0];//whenxsisassigned,sometimesfor(varxinxs??newX[0]){...}//inline,sometimes现在,虽然上面的内容对我来说完全没问题——也就是说,如果创建数组对象有任何“额外开销”,我只是不关心--我在想:C#

c# - .NET 双重检查锁定中对 volatile 修饰符的需求

多篇文章说,在.NET中实现双重检查锁定时,您要锁定的字段应该应用volatile修饰符。但究竟是为什么?考虑以下示例:publicsealedclassSingleton{privatestaticvolatileSingletoninstance;privatestaticobjectsyncRoot=newObject();privateSingleton(){}publicstaticSingletonInstance{get{if(instance==null){lock(syncRoot){if(instance==null)instance=newSingleton();

c# - .NET 双重检查锁定中对 volatile 修饰符的需求

多篇文章说,在.NET中实现双重检查锁定时,您要锁定的字段应该应用volatile修饰符。但究竟是为什么?考虑以下示例:publicsealedclassSingleton{privatestaticvolatileSingletoninstance;privatestaticobjectsyncRoot=newObject();privateSingleton(){}publicstaticSingletonInstance{get{if(instance==null){lock(syncRoot){if(instance==null)instance=newSingleton();

c# - C# 静态构造函数线程安全吗?

换句话说,这个单例实现线程安全吗:publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}staticSingleton(){instance=newSingleton();}publicstaticSingletonInstance{get{returninstance;}}} 最佳答案 在创建类的任何实例或访问任何静态成员之前,保证每个应用程序域只运行一次静态构造函数。https://learn.microsoft.com/en-us/dot

c# - C# 静态构造函数线程安全吗?

换句话说,这个单例实现线程安全吗:publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}staticSingleton(){instance=newSingleton();}publicstaticSingletonInstance{get{returninstance;}}} 最佳答案 在创建类的任何实例或访问任何静态成员之前,保证每个应用程序域只运行一次静态构造函数。https://learn.microsoft.com/en-us/dot

javascript - 使用 RequireJS,我如何传递全局对象或单例?

假设我正在主页级别编写代码,并且2个依赖项需要相同的对象实例,并将其声明为依赖项。解决这个问题的合适方法是什么?基本上我想做的是说,“如果这个依赖项没有加载......然后加载它。否则,使用已经加载的相同实例并传递那个。” 最佳答案 您可以将其设为模块级变量。例如,//Infoo.jsdefine(function(){vartheFoo={};return{getTheFoo:function(){returntheFoo;}};});//Inbar.jsdefine(["./foo"],function(foo){vartheF