我试图使用一个内部插件(组织特定的)来实现一些任务,为了通过插件调用方法,我需要传递依赖关系.我已经完成了初始部分,但当我试图在PreAppStart中使用注册。
config.For<IServiceProvider>().Use<ServiceProvider>()
我得到以下错误信息。
System.ArgumentOutOfRangeException
HResult=0x80131502
Message=Specified argument was out of the range of valid values.
Parameter name: Microsoft.Extensions.DependencyInjection.ServiceProvider must have at least one public constructor to be plugged in by StructureMap
我的分析:我知道ServiceProvider类是用于dot net core的,但我的解决方案是在标准的dot net(4.7),我需要实现这个插件来完成工作。
我也试过这样做。
config.For<IServiceProvider>().Use<ServiceProvider>().Ctor<string>("randomParam").Is("ranVal");
但错误还是一样。请帮助我
你是在告诉结构图,当某件事情需要的时候,需要一个 IServiceProvider
它应该创建一个 ServiceProvider
对象。它告诉你,它不能因为 ServiceProvider
没有一个公共构造函数。
你可能想注册一个实际的对象来使用,就像这样
config.For<IServiceProvider>().UseInstance(myServiceProviderReference);
有一些方法可以 开设服务机构但这是.Net平台扩展的一部分。我不确定这是否适用于.net框架项目。