ServiceProvider必须有至少一个公共构造函数被StructureMap插入。

问题描述 投票:0回答:1

我试图使用一个内部插件(组织特定的)来实现一些任务,为了通过插件调用方法,我需要传递依赖关系.我已经完成了初始部分,但当我试图在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");

但错误还是一样。请帮助我

c# .net dependency-injection structuremap service-provider
1个回答
1
投票

你是在告诉结构图,当某件事情需要的时候,需要一个 IServiceProvider 它应该创建一个 ServiceProvider 对象。它告诉你,它不能因为 ServiceProvider 没有一个公共构造函数。

你可能想注册一个实际的对象来使用,就像这样

 config.For<IServiceProvider>().UseInstance(myServiceProviderReference);

有一些方法可以 开设服务机构但这是.Net平台扩展的一部分。我不确定这是否适用于.net框架项目。

© www.soinside.com 2019 - 2024. All rights reserved.