问题标签 [constructor-injection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用简单注射器进行自绑定
我正在尝试使用 Simple Injector 学习依赖注入,所以我创建了一个简单的程序。我浏览了大量的例子,但没有找到类似的东西。Ninject 有一个类似的例子,他们使用
但是我没有在简单的注入器中找到任何自绑定示例。就目前而言,程序运行良好,我得到了我正在寻找的预期结果,但这是正确的方法吗?该程序是最后一个代码示例。
界面
班级
实现
程序
c# - 带有构造函数参数的类可以进行温莎构造函数注入吗?
(为简洁起见,我省略了标准的 Windsor 初始化代码。)
但是当创建一个实例时ISomethingElse
(可能是由于ISomethingElse
被注入到其他类中),Windsor 无法解析ISomething
构造函数参数,因为它不知道为类型参数提供什么。
c# - 温莎城堡中相同类型的解决时间参数
当我尝试传递两个相同类型的参数时,如下所示:
对于这样的构造函数:
然后我得到一个System.ArgumentException: An item with the same key has been added。
如何传递相同类型的参数?
- 关键是我想避免使用参数的文字字符串名称来识别哪些参数去哪里
- 而是使用参数的顺序
- 只是它是唯一适合的构造函数,尽管我猜温莎的字典实现不允许这样做。
c# - 温莎城堡中的混合解决时间参数
我有一个像这样的构造函数,我想从工厂传递参数:
我尝试了这种方法,但它不起作用,因为本地和世界价值观相同,一个覆盖另一个:
- registerEarly 应该自动解析,它在组合根目录中注册,并且有效
- passNowByInterface 应该在解析时传递,但因为它是一个接口,我需要指定接口类型,否则 Castle Windsor 将尝试使用参数的具体类型,同样有效 - 请参阅使用 Castle 传递通用参数失败温莎
- local 和 world 也需要在解析时传递,但请注意它们都是相同的具体类型,我不能依赖变量名 - 请参阅Castle Windsor 中相同类型的解析时参数
- 我不能让最后一个与其他人一起工作?
spring - 如何使用spring注解通过构造函数将参数动态传递给另一个对象
假设我们有一个像下面这样的简单类。我们可以在/没有默认构造函数中使用它。我真的很好奇是否可以通过 Spring 框架中的构造函数将参数/参数传递给另一个对象。要解释我想要做什么,请参阅下面的代码示例。
在定义类和 Spring 注释之后,我想通过 Spring 调用这个对象。
是否可以将参数动态注入另一个对象。
c# - 默认依赖注入?
我需要在整个域中记录很多东西,因此我的大多数域和应用程序服务都依赖于日志记录实现。假设我创建了这个小合约:
伟大的。现在我实现了一个基于 log4net 的基础设施服务:
但是,由于我的大多数类都具有其他依赖项,而不仅仅是记录器,因此我越来越接近于构造函数注入模式。
如何避免注入诸如设置或日志记录之类的基本核心需求,而只关注我真正需要的依赖项?属性注入?服务门面?静态日志工厂?
spring - 没有setter方法,构造函数的Spring自动装配不起作用
这是我的 Spring xml 配置:
还有我的 DAOManager 类:
在这里我调用获取我的 daoManager bean。
如果我删除 setter 方法,为什么会抱怨?我不需要它。如果我在构造函数之前删除 @Autowired (它也有效),它只是没用并且不使用 by constructor autowire 函数。
c# - 是否可以使用 Ninject 在注入的类构造函数中解析 URL?
我有一个在 ASP.Net MVC 5 Web 应用程序和控制台应用程序中使用的服务类。我们称之为 MyService。当 Ninject 实例化 MyService 对象以传递给 Web 上下文中的控制器时,我希望使用类似这样的东西来解析 URL
当我的控制台应用程序实例化 MyService 时(也使用 Ninject,但在非 Web 上下文中),我希望它从 AppSettings 中获取 url,如下所示:
这可行吗?我认为它可能在创建绑定时使用 WithConstructorArgument() 和 NinjectWebCommon.RegisterServices(IKernel kernel) 中的正确参数,但我不知道具体如何。
我的猜测是 MyService 构造函数必须知道注入它的控制器类,并能够从该控制器调用方法。如果不知道控制器类,那么它将使用应用程序设置。
当然,我也可以在每个控制器构造函数中设置 url 参数,并在每个控制器构造函数中设置一个 MyService 对象,以及在控制台应用程序的其他地方,但我不想每次实例化 MyService 对象时都设置这个属性。
parameters - 无法获取 Ninject ConstructorArgument 的值(作为参数传递给 kernel.Get)
无法获取传递给 kernel.Get() 的 ConstructorArgument 参数的值。我想使用参数的值来确定两个字符串值中的哪一个将传递给构造函数。该参数实际上在预期的时候就在那里,我只是无法获得它的值。在调用参数的 GetValue 方法后,我得到了一个 null ref 异常:
class - 使用 Moq 模拟具体类时如何使用接口参数调用构造函数
我有以下类,它使用构造函数注入:
对于此类中的大多数方法,我只是为IRepository
andIProvider
和构造Moq 模拟Service
。但是,该类中有一个方法会调用同一类中的多个其他方法。为了测试这个方法,而不是一起测试所有这些方法,我想测试该方法是否正确调用这些方法并正确处理它们的返回值。
最好的方法是模拟Service
. 我以前用 Moq 模拟过具体的课程没有问题。我什至用 Moq 模拟了需要构造函数参数的具体类,没有问题。然而,这是我第一次需要将模拟参数传递给模拟对象的构造函数。自然,我尝试这样做:
但是,这是行不通的。相反,我收到以下错误:
如果Service
's 的构造函数采用像int
s 和string
s 这样的简单参数,这很好用,但如果它采用我正在模拟的接口,则不行。你怎么做到这一点?