Unity:UnabletoconstructtypeLogWriter对于下面的“project”,我在解析UnityforDI时遇到了一个非常烦人且无法解释的错误。InvalidOperationException-无法构造LogWriter类型。您必须配置容器以提供此值。?例如消息;“依赖项的解析失败,类型=“WindowsFormsApplication1.Performance”,名称=“(无)”。rn发生异常:解析时。rnException是:InvalidOperationException–LogWriter类型不能是您必须配置容器以提供此价值。rn——————————————————rn在异常情况下,容器是:rnrnparseWindowsFormsApplication1.Performance,(none)rnparseparameter"lw"constructorWindowsFormsApplication1.Performance(Microsoft.Practices.EnterpriseLibrary.Logging.LogWriterlw,Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManagerem)rnparseMicrosoft.Practices.EnterpriseLibrary.Logging.LogWriter,(none)rn"?ex.StackTrace;"在Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型t,对象存在,字符串名称,IEnumerable1resolverOverrides)在e:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\UnityContainer.cs:line515rn在微软.Practices.Unity.UnityContainer。DoBuildUp(Typet,Stringname,IEnumerableate:1resolverOverridesinBuildsUnityUnityTempCompileUnityUnitySrc)ine:\Builds\Unity\UnityTemp\Compile\Unity\Unity\Src\UnityContainer.cs:line515rnatMicrosoft。实践.Unity.UnityContainer.DoBuildUp(Typet,Stringname,IEnumerable1resolverOverrides)UnityContainer.cs:line485rnate:Microsoft.Practices.Unity.UnityContainer.Resolve(Typet,Stringname,ResolverOverride[]inBuildsUnityUnityTemp编译UnityUnitySrcresolverOverrides)UnityContainer.cs:第173行在e:Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainercontainer,ResolverOverride[]override)inBuildsUnityUnityTempCompileUnityUnitySrcUnityContainerExtensions.cs:inD:DevzoneTaskingWindowsFormsApplication1Form1.cs:line504rninWindowsFormsApplication1.Form1.OnLoad(EventArgse)inline33"inaform:protectedoverridevoidOnLoad(EventArgse){base.OnLoad(e);try{IUnityContainercontainer=newUnityContainer();Performancep=container.Resolve();}catch(Exceptionex){}}依赖类:publicclassPerformance{publicPerformance(LogWriterlw,ExceptionManagerem){}}配置文件:需要设置Enterprise库扩展被添加到容器中。没有它,容器不会读取配置文件,因此不知道如何创建Entlib对象,例如LogWriter。尝试获取LogWriter类型的实例时出现激活错误,键“”检查您的配置文件,它必须具有正确的默认“loggingConfiguration”部分为了让Unity构建您的Performance类,它需要知道如何构建一个ILogWriter的实现。我在你的代码中没有看到你告诉Unity为ILogWriter接口创建什么类,所以我怀疑你可能需要添加它。试试这个:protectedoverridevoidOnLoad(EventArgse){base.OnLoad(e);尝试{IUnityContainer容器=newUnityContainer();容器.RegisterType();容器.RegisterType();container.RegisterType(newInjectionConstructor(typeof(ILogWriter),typeof(ExceptionManager));Performancep=container.Resolve();}catch(Exceptionex){}}LogWriter没有空的构造函数或具有所有具体类型的构造函数parameters:LogWriterconstructor.因此,UnityUnabletobuildit,asitsays,itneedsyourhelp,byconfiguringthecontainertoprovideanimplementation.作为确认,ExceptionManager可以解决,因为它只有一个构造函数,没有参数:)以上是C#学习教程:Unity:不可能构造出LogWriter类型共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
