我正在使用Owin、WebAPI、EntityFramework、ASP.NETIdentity创建API。我正在使用SimpleInjector作为我选择的DI框架。在Owin启动过程中,我想用一些样本数据为我的数据库做种。这是由实现IDatabaseInitializer的类处理的,它看起来像这样:publicclassMyDbInitializer:DropCreateDatabaseAlways{privatereadonlyIUserManager_userManager;publicMyDbInitializer(IUserManageruserManager){_user
例子:publicclassBusinessTransactionFactorywhereT:IBusinessTransaction{readonlyFunc_createTransaction;publicBusinessTransactionFactory(FunccreateTransaction){_createTransaction=createTransaction;}publicTCreate(){return(T)_createTransaction(typeof(T));}}使用相同的容器设置代码:publicclassDependencyRegistration:
在.NETFramework本身中是否有将DI作为架构原则或设计模式应用的具体示例/实例?框架/BCL中的任何(或许多)类型是否符合IoC?类型名称和基于C#的简短说明/解释会很棒!这会使将DI注入(inject)设计原则作为最佳实践的需求变得更加复杂......因为它是从基础框架本身收集而来的。我重申,我不是在为IoC/DIIN框架寻找IoC/DI框架而是。编辑:只是想获得更多的实例/示例......因此赏金! 最佳答案 一般来说,BCL中没有很多DI的例子——也许是因为BCL是一个相当独立的框架,而DI更多的是一个应用程序架构问
目前我正在尝试使用依赖注入(inject)容器,这次是使用Unity。给定以下界面:publicinterfaceIPodcastCommService{voidDownload();voidUpload();}和以下实现:publicclassPodcastService{privateIPodcastCommServicecommservice;privateStringurl;publicPodcastService(Stringurl,IPodcastCommServicecommservice){this.commservice=commservice;this.url=ur
我们需要在具有静态方法的代码中使用非托管库。我想在我的代码中将库操作作为依赖项引入。除了具有静态方法之外,该库还有一个初始化方法和一个设置方法,它们都是全局的。所以我不能只将它包装在一个实例类中,因为如果一个实例更改设置,所有其他实例都会受到影响,如果一个实例被初始化,所有其他实例将被重新初始化。我考虑过将其作为单例类引入。这样它将在一个实例类中,但只有一个实例,因此我不必担心更改设置或初始化。您如何看待这种方法?我对依赖注入(inject)模式还很陌生,我不确定单例模式是否是一个好的解决方案?对于类似的案例,您的解决方案是什么?编辑:初始化也需要一个参数,所以我不能只是锁定方法调用并
我正在使用EntityFrameworkCode-First构建ASP.NETCoreMVC应用程序。我实现了一个简单的存储库模式,为我创建的所有模型类提供基本的CRUD操作。我选择遵循docs中提供的所有建议。DI就是其中之一。在~~.NET5~~(6年后更新:.net5是.netcore1.0的alpha名称)依赖注入(inject)对于我们不直接使用的任何类都非常有效实例化(例如:Controller、数据存储库……)。我们只需通过构造函数注入(inject)它们,并在应用程序的Startup类中注册映射://SomerepositoryclasspublicclassMyRep
是否可以使用ninject进行依赖项注入(inject),使结果类似于我可以在MVC中获得的注入(inject)。详细来说,如果我使用MVCninject适配器,我可以将我的WebController声明为具有构造函数参数,然后由ninject自动注入(inject)。但是,我还没有找到这样一个WPF的ninject扩展,它可以让我有一个这样的窗口:publicpartialclassMainWindow:Window{privatereadonlyIServiceinjectedService;publicMainWindow(IServiceinjectedService){thi
例子:publicabstractclassBaseControler:Controller{publicIUnitOfWorkUnitOfWork{get;set;}}publicclassHomeController:BaseControler{readonlyIUserRepository_userRepository;//:-)publicHomeController(IUserRepositoryuserRepository){_userRepository=userRepository;}}我们都知道,当需要依赖时,我们必须使用构造函数注入(inject)。如果它是一个可选
如何为给定服务接口(interface)注入(inject)所有已注册实现的列表?publicclassThing{publicThing(IListservices){}}publicclassServiceA:IService{}publicclassServiceB:IService{}publicclassServiceB:IService{}给定这样的注册:publicclassStartup{publicvoidConfigureServices(IServiceCollectionservices){services.AddTransient().AddTransient
我在我的ASP.NETCORE应用程序中到处使用基于构造函数的依赖注入(inject),我还需要在我的操作过滤器中解析依赖关系:publicclassMyAttribute:ActionFilterAttribute{publicintLimit{get;set;}//somecustomparameterspassedfromActionprivateICustomServiceCustomService{get;}//thismustberesolvedpublicMyAttribute(){}publicoverrideasyncTaskOnActionExecutionAsyn