问题标签 [dependency-resolver]
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.
webpack - 用于 SystemJS 样式导入的自定义 Webpack 解析器!带装载机
我有一个使用 SystemJS 的项目 - 这不能改变。我们也在使用 StoryBooks,它使用 WebPack——这也不能改变。到目前为止,两人相处得很好。但是,我有一个模块可以将文件加载为纯文本并解析它们:
如果我的项目使用 WebPack,上面的代码将如下所示:
由于 SystemJS 是“主要”模块加载器,我希望所有应用程序代码都保持以 SystemJS 为中心。我想为 webpack 编写一个自定义解析器来获取 SystemJS 样式的导入并“翻转”它们(可以这么说)。代码如下所示:
我遵循了几个创建自定义解析器的示例(此处和此处),但没有一个有效负载包含我重建请求对象所需的所有数据。有没有办法可以在模块解析的早期就连接到 WebPack以实现我的目标?
asp.net - 使用解析器的 asp.net webapi 通用存储库和依赖注入会出错
我是设计模式和依赖注入的新手。我使用本教程来实现我的项目。
使用实体框架、通用存储库模式和工作单元的具有 Web API 的企业级应用程序架构
我有两个 API 控制器:SongController 和 PlaylistController,根据教程,我已经实现到Resolve-dependency-injection一章
当我运行我的应用程序时,我的两个 webapis 1)songcontroller中的http://localhost:49544/api/song与解析器配合得很好 2)http://localhost:49544/api/playlist/8a79e096-052b-4057-9683 -7a7443aa305a返回错误并显示以下消息
exceptionMessage": "依赖项解析失败,类型 = 'MusicCloudWebApi.Controllers.API.PlayListController',名称 = '(none)'。\n在解析时发生异常。\n异常是:InvalidOperationException - 当前类型,MusicCloud。 Services.IPlayListServices,是一个接口,不能构造。您是否缺少类型映射?\n---------------------------------------- ------\n异常发生时,容器为:\r\n Resolving MusicCloudWebApi.Controllers.API.PlayListController,(none)\r\n Resolving parameter 'playListServices' of constructor MusicCloudWebApi.Controllers.API .PlayListController(MusicCloud.Services.IPlayListServices playListServices)\r\n 正在解决 MusicCloud.Services.IPlayListServices,(none)\r\n", "exceptionType": "Unity.Exceptions.
1& activator)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)", "innerException": { "message": "An error has occurred.", "exceptionMessage": "The current type, MusicCloud.Services.IPlayListServices, is an interface and cannot be constructed. Are you missing a type mapping?", "exceptionType": "System.InvalidOperationException", "stackTrace": " at Unity.ObjectBuilder.BuildPlan.DynamicMethod.DynamicMethodConstructorStrategy.ThrowForAttemptingToConstructInterface(IBuilderContext context)\r\n at lambda_method(Closure , IBuilderContext )\r\n at Unity.ObjectBuilder.BuildPlan.DynamicMethod.DynamicBuildPlanGenerationContext.<>c__DisplayClass16_0.<GetBuildMethod>b__0(IBuilderContext context)\r\n at Unity.ObjectBuilder.BuildPlan.DynamicMethod.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)\r\n at Unity.ObjectBuilder.Strategies.BuildPlanStrategy.PreBuildUp(IBuilderContext context)\r\n at Unity.Container.StrategyChain.BuildUp(IBuilderContext builderContext)\r\n at Unity.Policy.BuildPlanPolicyExtensions.ExecuteBuildUp(IBuildPlanPolicy policy, IBuilderContext context)\r\n at Unity.ObjectBuilder.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey, Action
1 childCustomizationBlock)\r\n Unity.ResolverPolicy.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context)\r\n lambda_method(Closure , IBuilderContext)\r\n Unity.ObjectBuilder.BuildPlan.DynamicMethod.DynamicBuildPlanGenerationContext.<>c__DisplayClass16_0.b__0 (IBuilderContext 上下文)\r\n 在 Unity.ObjectBuilder.BuildPlan.DynamicMethod.DynamicMethodBuildPlan.BuildUp(IBuilderContext 上下文)\r\n 在 Unity.ObjectBuilder.Strategies.BuildPlanStrategy.PreBuildUp(IBuilderContext 上下文)\r\n 在 Unity.Container .StrategyChain.BuildUp(IBuilderContext builderContext)\r\n 在 Unity.Policy.BuildPlanPolicyExtensions.ExecuteBuildUp(IBuildPlanPolicy 策略,IBuilderContext 上下文)\r\n 在 Unity.UnityContainer.BuildUp(类型 typeToBuild,现有对象,字符串名称,ResolverOverride[]解析器覆盖)"} } }
数据库表中的 userId 是 nvarchar(128) 类型
我尚未实现身份验证,但将表中的值作为参数硬编码到 webapi。
错误有什么问题?
解析器项目有以下接口和类
在 MusicWebAPI 项目解决方案中,在 global.asax(UnityConfig.RegisterComponents();) 处调用了以下类 UnityConfig
在 MusicCloud.Model 中,我有一个类名 DependencyResolver
播放列表控制器(API)
在 MusicCloud.Services 中,我有一个实现 PlayListServices 的接口 IPlayListServices
dependencies - SBT:将 sbt 项目的解析器添加到依赖于它的项目的解析器中
我有一个 SBT 项目A
发布在../nexus-url/.../a
我有另一个 SBT 项目B
,它依赖于A
并且为了获得它,它添加../nexus-url/.../a
到它的解析器列表中。项目B
发布到../nexus-url/.../b
我有另一个 SBT 项目C
,它依赖于B
它,因此为了获得它,它添加../nexus-url/.../b
到它的解析器列表中。
现在,问题是 projectC
无法添加B
为依赖项,因为它无法找到 project A
。我原以为在导入时B
,它会在 的解析器中寻找它的依赖关系B
,但这似乎并没有发生。我期望这个是错的吗?
如果是,有没有办法将B
的依赖信息嵌入到发布的包中,以便 A 可以愉快地出现并导入它?
c# - 如何使用统一容器解决所有表单
我在我的 WinForms 应用程序中使用统一容器并注册接口和类。但是当打开其他表单时,它不适用于获取数据。它只适用于form1。如何解决所有表格?
这是 form1() 中的构造函数注入:
}
这是 formAddUpdate() 中的构造函数注入:
}
现在,当运行应用程序时,我可以从 from1 检索数据,但是当切换到添加/更新表单时,它返回错误:{“对象引用未设置为对象的实例。”}
如何解决我的应用程序中的所有表格?
swift - Swinject:生成任何对象的实例(对于未注册的对象、ViewModel 等...)
是否可以解决/创建未在 Swinject 容器中注册的对象的新实例?在 Unity 的 c#(来自 Microsoft)的依赖注入中就是这样。
我想解决对某些协议有依赖性的 viewModel 类。例如:我在容器中注册了 IFileManager:
我 viewModel 对 IFileManager 有依赖
现在我想使用 Swinject 解析器创建 AwesomeViewModel 的新实例,并且我希望将所有依赖项添加到 init 中,但它不起作用
并且 ViewModel 为零
c# - .NET 程序集解析复杂架构
希望有人能回答这个问题。
我有一个具有这种架构的应用程序:
ApiLibrary(类库) UsedLibrary version 2(ApiLibrary 引用的类库)
然后,My ApiLibrary 有一个第三方插件系统。开发人员可以创建引用 ApiLibrary 并扩展名为“AbstractPlugin”的抽象类型的自定义插件。有一个特定的文件夹(插件),用户可以在其中放置子文件夹,它们本身包含为插件生成的 dll。
我的 API 有一个专门的方法来加载这些插件,循环这个文件夹中的所有 dll 文件并使用“Assembly.LoadFile(currentDll)”。然后,它在程序集中的所有类型上循环并尝试查找从 AbstractPlugin 扩展的类型。找到的所有这些类型都是可以在 API 中使用的插件。
插件不应在放置它们的文件夹中包含 ApiLibrary 的输出(对开发人员指定的要求)。为了确保在调用插件函数时我的 API 得到有效解析,我处理了 AppDomain.CurrentDomain.AssemblyResolve 事件并返回正在执行的程序集。但他们可以在他们的文件夹中包含其他库的 dll。
问题是现在,我有一个实际上需要引用“UsedLibrary”的插件,但在版本 1 中。然后,如果在我的 ApiLibrary 中,在加载插件之前调用 UsedLibrary 中的函数,则加载版本 2 和插件因为它需要版本 1,所以无法工作。此外,如果之前加载了插件,则会加载版本 1,并且我的 API 无法使用 v2 中的函数。
事实上,我简化了这个问题,因为它确实更复杂,因为 UsedLibrary 动态加载放置在我的 API 主文件夹中的非托管库,并且插件应该从它自己的文件夹加载非托管库。
我想知道是否有人有解决方案来确保我的插件能够从 v1 调用函数并且我的 API 将从 v2 调用函数(我无法重命名这些程序集)。
非常感谢。
编辑1:
我尝试为每个插件文件夹在不同的应用程序域中加载 DLL,但经过多次尝试,最终无法获得我的程序集。如何使用这种代码在不同的 appdomains 中加载我的程序集:
非常感谢。
编辑2:
我终于明白了如何在 AppDomain 之间进行通信,并且可以加载程序集并在其中找到插件,但我仍然有一个问题。
插件由我的 API(类库)通过 PluginsManager 对象加载:
帮助检索插件的 PluginLoader 对象被描述为:
我注意到为了确保通信,可以在当前域和插件域之间传递的所有对象都必须扩展 MarshalByRefObject 类(或者具有 Serializable 属性,但我想在 AppDomains 之间进行通信而不是复制当前域中的对象)。没关系,我确保所有需要的对象都扩展 MarshalByRefObject 类型。
此 API 由调用 PluginsManager 以加载所有插件并迭代加载的插件的用户应用程序(另一个 Visual Studio 项目)引用。
它可以成功加载和迭代所有插件,但是在 AbstractPlugin 类型中,我有必须由应用程序处理的特定事件。在创建这些事件的句柄时,我有一个 SerializationException ...
这是我的应用程序中的插件控制器:
因此,PluginsController 类还必须扩展 MarshalByRefObject 类,因为添加到事件的方法必须通过代理发送。
由于我的 API 架构复杂,并且某些功能无法使用,我还有许多其他问题。如果我在当前域中加载我的插件,一切正常,但程序集版本之间可能存在问题。我在想我将无法执行我想要的......所以我只会确保我的 API 在加载插件之前加载了所有依赖项,如果程序集与之前的程序集不兼容,插件可能无法工作插件使用的版本。
如果有人有任何其他建议...
谢谢你。
xamarin - Xamarin.Forms DependencyService 不适用于所有平台
在文档中明确指出您需要一个适用于所有平台的实现:
您必须在每个平台项目中提供一个实现。如果没有注册接口实现,则将
DependencyService
无法Get<T>()
在运行时解析该方法。
我没有提供实现,所以应用程序崩溃了。但是,如果我不需要该平台的实现,我该怎么办?提供这样的无体方法?
我应该提供一个实现吗?
还是在DependencyService
这里使用了错误的选项?
angularjs - 缩小后的AngularJS'未知提供者'(ng-strict-di被激活)
我首先通过grunt-contrib-concat
grunt 任务连接我所有的 js 文件。有了这个,一切都很好(没有缩小)。
我正在尝试切换到 Google 的 Closure Compiler,以便我可以缩小它并添加源映射,首先我正在使用这个选项:--compilation_level WHITESPACE_ONLY
并且--formatting=pretty_print
我正在以与之前的 grunt 任务相同的顺序传递文件,所以我应该有一个类似于我以前得到的第一个输出。
注意:感谢一些崇高的文本魔术和差异检查器,我已经能够检查我最终生成的两个文件是否以完全相同的顺序获得了所有相同的控制器/服务。
我所有的控制器都没有使用注释语法(依赖项在控制器之前被声明为字符串)所以我使用 ng-annotate 和这个脚本来解决这个问题。
现在我所有的文件都可以缩小了。为了确定这一点,我什ng-strict-di
至在我的应用程序上声明并暂时切换回以前的串联系统。如果我故意在控制器名称中输入错字,它会完美运行并且会失败。
所以从这里我认为闭包编译器应该像一个魅力一样工作......但是不,Unknown Provider
当角度尝试在我的app.run()
函数中注入我的第一个服务时,我遇到了一个错误。(.config()
执行得很好,因为我在这里没有自定义依赖项以及 . 的三个第一个依赖项 .run()
。确实是我个人实现的依赖项失败了。)
有人已经面临类似的问题吗?知道是什么原因造成的吗?
angularjs - UI 路由器解决不适用于基于组件的状态
背景:
在我正在开发的应用程序中,我们有一个在两个地方使用的组件。在一个地方,它是从 Material DesignbottomSheet
系统中调用的。在另一种情况下,我们直接通过 ui-router 状态系统使用该组件。
这是引起麻烦的设置。我已经得到了一个angular.module
声明,其中设置了所有正确的包依赖项——我已经和我的团队一起开发这个应用程序几个月了,问题特别是下面的代码,这是我刚刚添加的。
路线.ts
很棒的功能.ts
问题: 每当我尝试直接导航到“真棒功能”时,不仅我的 HTML 没有呈现,而且我收到以下控制台错误:
似乎无论出于何种原因,$stateProvider.state({resolve})
都没有正确解决我的问题awesomeDefaults
并将值注入awesomeFeatureCtrl
.
问题:
为什么resolve
不像我记得的那样工作?
据我了解,该resolve
对象采用其上的每个命名索引,运行其上的任何功能,然后根据UI Router Documentation将其解析为路由中事物的控制器。很明显我记错了或误解了某些东西。
c# - 如何通过匹配温莎城堡中的命名空间自动注册?
在写这篇文章之前我检查了很多答案和文章,但我没有成功。我想注册从 1 个特定接口派生的所有类IInject
我有一个这样的界面:
要自动注册 IFoo,我可以在 Ninject 中这样:
但在温莎城堡我不能。如果您必须知道 IInject 接口是一个空接口,仅用于触发自动注册:
如何在温莎城堡中使用这种匹配或包含模式?
谢谢,