网络框架4.6.1无参数构造函数中依赖注入的配置问题

我正在基于一些旧代码创建新的WCF服务。我认为我所做的一切都一样,但是在使用DI创建类的过程中出现错误:

没有为此对象定义无参数构造函数。

以下是我的新代码,该代码是在工作代码的基础上完成的:

public SChangeclaimHandlerStatusDTO ChangeclaimHandler(SChangeclaimHandlerMessageDTO message)
{
    (...)
    var status =
        ServiceProvider<VIG.ZEVIG.BusinessLayer.BusinessLogic.Order.S.SIntegrationService>
            .Service.ChangeclaimHandler(message);
    //line above is causing error
    (...)
    return status;
}

以下称为类:

public class SIntegrationService : ServiceBase 
{
    private const int SImageExpirationTimeInminutes = 60;

    public SIntegrationService(
        IDocumentService documentService,IAttachmentService attachmentService,IUserService userService,ITextEncryptor textEncryptor,(...) )
    {
        RegisterService<IDocumentService>(documentService);
        RegisterService<IAttachmentService>(attachmentService);
        RegisterService<IUserService>(userService);
        RegisterService<ITextEncryptor>(textEncryptor);
        (...)
    }
}
public class ServiceBase : IBusinessService
{
    public ServiceBase();
    public ServiceBase(Dictionary<Type,object> dependencies);
    protected IAppContext ApplicationContext { get; }
    protected void RegisterService<T>(T dependency) where T : class;
}

和ServiceProvider类如下:

public class ServiceProvider<T> where T : class
{
    public ServiceProvider();

    public static T Service { get; }
}

SIntegrationService类只有一个构造函数(没有无参数构造函数)。 这两个程序都有引用SimpleInjector。

我对DI很陌生,所以也许我缺少明显的东西,也许我应该在配置文件中放一些东西,以使我知道将包括DI? 我知道应该以这种方式工作,因为我盯着其他工作正常的项目中的代码。

在其他项目配置中,我也有这行:

<Services
  AutoWire="false"
  IocContainer="V.Common.Ioc.SimpleInjector.SimpleInjectorContainerAdapter,V.Common.Ioc.SimpleInjector"/>

也许这就是解决方案?

下面是错误详细信息:

  

System.MissingMethodException HResult = 0x80131513
  Message =没有为此对象定义无参数的构造函数。
  源“ mscorlib”字符串
  System.RuntimeTypeHandle.CreateInstance上的StackTrace”(RuntimeType>类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,> RuntimeMethodHandleInternal&ctor,布尔&bNeedSecurityCheck)\ r \ n
  在System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean   skipCheckThis,布尔值fillCache,StackCrawlMark和stackMark)\ r \ n位于   System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,   布尔skipCheckThis,布尔fillCache,StackCrawlMark&   stackMark)\ r \ n位于System.activator.CreateInstance(Type type,Boolean   非公开)\ r \ n(位于System.activator.CreateInstance(类型类型)\ r \ n
  在V.Common.Services.ServiceProvider`1.get_Service()\ r \ n在   BusinessServices.SIntegration.SIntegrationService.ChangeclaimHandler(SChangeclaimHandlerMessageDTO   消息)在D:\ TFS1 \ Branches \ Release 1.2.1中   Env01 \ ZV \ BusinessServices.SIntegration \ SOrderService.svc.cs:line   31 \ r \ n在SyncInvokeChangeclaimHandler(Object,Object [],Object []   )\ r \ n在   System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象   实例,Object []输入,Object []&输出)\ r \ n位于   System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&   rpc)“字符串

qwq200481 回答:网络框架4.6.1无参数构造函数中依赖注入的配置问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3146468.html

大家都在问