我正在试图解决一个类型时,出现以下错误:无法在类型长度相等1多个构造之间选择“System.String”
不能多个构造之间的长度相等1的类型选择“ System.String”。组件注册时,使用UsingConstructor()配置方法显式选择构造函数。
的类型有1个构造函数的IRepository
和ILog
所以我真的不知道是哪里的System.String
即将到的画面。我很困惑。有谁知道问题是什么?
这里是堆栈跟踪:
在Autofac.Core.Activators.Reflection.MostParametersConstructorSelector.SelectConstructorBinding(ConstructorParameterBinding [] constructorBindings) 在Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext上下文,IEnumerable的
1 parameters) at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable
1参数) 在Autofac.Core.Resolving.InstanceLookup.Execute() 在Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope,IComponentRegistration注册,IEnumerable的1 parameters) at Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable
1参数) at Autofac.Core.Activators.Reflection.AutowiringParameter。 <> C_ DisplayClass2.b _0() 在Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() 在Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext上下文,IEnumerable的1 parameters) at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable
1参数) 在Autofac.Core.Resolving.InstanceLookup.Execute() 在Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope,IComponentRegistration注册,IEnumerable的1 parameters) at Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable
1参数) 在Autofac.Core.Activators.Reflection.AutowiringParameter。 <> C_ DisplayClass2.b _0() 在Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() 在Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext上下文,IEnumerable的1 parameters) at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable
1参数) 在Autofac.Core.Resolving.InstanceLookup.Execute() 在Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope,IComponentRegistration注册,IEnumerable的1 parameters) at Autofac.Core.Resolving.ResolveOperation.ResolveComponent(IComponentRegistration registration, IEnumerable
1参数) 在Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration注册,IEnumerable的1 parameters) at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable
1参数) at Autofac.ResolutionExtensions.TryResolveService(IComponentContext c ontext,Service服务,IEnumerable的1 parameters, Object& instance) at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable
1参数) 在Autofac.ResolutionExtensions.Resolve(IComponentContext背景下,类型的serviceType,IEnumerable的1 parameters) at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) at SomeCompany.ComponentModel.Composition.AutofacIocContainer.Resolve(Type type) in c:\SomeCompany.Core\ComponentModel\Composition\AutofacIocContainer.cs:line 17 at SomeCompany.Commands.CommandFactory.Create(String name) in c:\SomeCompany.Core\Commands\CommandFactory.cs:line 28 at SomeCompany.Web.Controllers.CommandsController.Post(String id, String request) in c:\SomeCompany.Web\Controllers\CommandsController.cs:line 49 at lambda_method(Closure , Object , Object[]) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4() at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func
1功能,的CancellationToken的CancellationToken)
IRepository和ILog解决什么问题?实现这些接口的类的构造函数可能需要一个字符串参数,或者他们可以采用具有带字符串参数的构造函数的依赖项等。 –
请显示您的配置和正在解析的类型的定义。难道它的一个依赖项('IRepository','ILog'或者它们的依赖关系是递归的)包含多个构造函数? Doensn't Autofac抛出一个类型名称(也许在内部异常)? – Steven
你有没有想过这个? – ps2goat