草庐IT

Spring之@Autowired依赖注入探究

全部标签

c# - 注入(inject)应用程序配置的最佳方式

好吧,我正带着一个关于将配置设置注入(inject)应用程序组件的正确方法的问题进入这个奇妙的网站。因此,概述是:我有一个用C#.Net3.5编写的应用程序。它由3个组件组成-一个核心、一个数据和一个服务。数据和服务程序集需要从app.config检索设置,这是通过设置文件完成的,例如。代码:publicstaticStringRequestQueueConnectionString{get{returnConnectionSettings.Default.RequestQueueConnectionString;}}配置:...现在,程序集都是使用IoC的StructureMap设置

c# - 传递依赖导致同一 DLL 的版本冲突

.NET世界中管理导致版本冲突的传递依赖项的最佳实践是什么?详情:项目A依赖于项目B,而项目B又依赖于库C还有项目A还依赖于项目X,后者依赖于库C的不同且(可能)不兼容的版本。A->B->Cv1.0&A->X->Cv2.0其中Cv1.0Cv2.0有没有办法让它工作?可以不使用GAC来完成吗?即使B和X只是二进制格式(无法访问源代码)也能做到吗?换句话说,有没有一种方法可以让项目B和X在项目A中一起使用时各自使用它们自己的依赖项,而不会引起冲突。注意:我意识到理想情况下我根本不应该遇到这个问题,但随着对外部库的依赖不断扩大,这将是一个不可避免的副作用。所以我想知道应该如何最好地处理它。

c# - 使用 dotnet cli 无法恢复 Mvc CodeAnalysis 依赖项

我在恢复ASP.NET5/ASP.NETCore1.0的依赖项时遇到错误。看起来Microsoft.AspNet.Mvc的几个依赖项(即Microsoft.CodeAnalysis.CSharp/.Common)是修复了看似过时的包。对此的要求是使用dotnetcli工具并同时针对.NETVanilla和.NETCore。有没有办法让Mvc引用CodeAnalysis的核心兼容版本?在VisualStudio2015(v14.0.24729.00更新1)中重现的步骤:文件>新建>项目>Web>ASP.NETWeb应用程序API.NET5模板>WebAPI打开PM,运行命令dotnetr

c# - 重新启动具有依赖服务的服务?

以csharp-example开头并适当注意相关的SO问题(RestartawindowsservicesfromC#和CannotrestartaService)以及与仅重新启动一项服务有关的各种其他问题,我想知道重新启动服务的最佳方法是什么具有依赖服务(例如MessageQueuing,MessageQueuingTriggers所依赖,或IIS,FTPPublishing和WorldWideWebPublishing所依赖)。mmc管理单元自动执行此操作,但代码似乎没有提供相同的功能(至少不那么容易)。MSDNdocumentationforStop说“如果任何服务的操作依赖于该

c# - 具有非依赖参数的构造函数注入(inject)

我有一个像这样的接口(interface)ITradingApi:publicinterfaceITradingApi{IOrderCreateOrder(...);IEnumerableGetAllSymbols();//...}这意味着成为交易软件供应商的不同API的外观。我的View模型在其构造函数中依赖于此交易API:publicclassMainViewModel{publicMainViewModel(ITradingApitradingApi){/*...*/}//...}我使用Ninject作为IoC容器,所以我将像这样创建我的View模型的实例:varvm=kerne

c# - (自动)依赖注入(inject)绑定(bind)机制

创建依赖项注入(inject)绑定(bind)的两种常见机制(例如通过IOC容器)来自XML配置或命令式代码块。在这些情况下,键值对是显式的(即键=请求的类型,值=返回的类型)。仍然存在第三种“启发式”方法,其中仅向应用程序/IOC容器提供[IMyClass]键,然后容器反射(reflect)一组应用程序程序集依赖项以找到所有名称匹配的具体类[MyClass]。换句话说,“返回类型”值是发现的而不是声明的。我想知道的有两个方面:哪些IOC容器(或其他后期绑定(bind)工具)允许启发式方法?这种方法有更通用的名称吗?除了我列出的三种绑定(bind)技术外,还有其他用于实践的绑定(bin

c# - Silverlight 构造函数注入(inject) View 模型+设计模式

我正在努力掌握在Silverlight4中编写可测试的ViewModel。我目前正在使用MVVMlight。我使用的是AutoFac,而IoCContainer工作正常。然而,为了注入(inject)绑定(bind)到View的ViewModels的构造函数,我有这个构造函数链接:publicUserViewModel():this(IoCContainer.Resolve()){}publicUserViewModel(IUserServiceAsyncuserService){if(this.IsInDesignMode)return;_userService=userServic

c# - 如何将管道代码注入(inject)/生成用属性装饰的方法?

我正在阅读一些关于缓存和记忆化以及如何使用委托(delegate)和泛型轻松实现它的文章。语法非常简单,而且实现起来非常容易,但我只是觉得由于重复性,应该可以根据属性生成代码,而不必一遍又一遍地编写相同的管道代码。假设我们从默认示例开始:classFoo{publicintFibonacci(intn){returnn>1?Fibonacci(n-1)+Fibonacci(n-2):n;}}然后记住这个://Let'ssaywehaveautilityclasssomewherewiththefollowingextensionmethod://publicstaticFuncMemo

c# - 仅从指定的命名空间解决依赖关系

我可以用这条语句自动注册所有实现接口(interface)的类型IUnityContainercontainer=newUnityContainer();container.RegisterTypes(AllClasses.FromAssembliesInBasePath(),WithMappings.FromMatchingInterface,WithName.Default,WithLifetime.Transient);ICustomerresult=container.Resolve();如何为接口(interface)和实现指定命名空间?即:只有Framework.Repos

c# - 如何在 VS 2017 中创建具有最小依赖性的 .NET Standard NuGet 包?

我目前正在使用VisualStudio2017迁移库项目以支持.NETStandard1.1。我希望将该项目作为单个NuGet包发布,该包可以同时针对.NETFramework4.5+和.NETCore、UWP等。但是,当我尝试在.NETFramework项目中安装生成的包时,会生成一个巨大的包依赖项列表,其中包含.NET标准中定义的所有包(见下文):我知道这些都是定义为.NETStandard1.1规范一部分的程序集。然而,我的特定项目实际上只需要其中的一小部分,这个依赖列表对于在他们的项目中安装该包的任何人来说都会非常困惑。我试图按照similarquestion的答案进行操作其中