0

我們已經開發了一個示例項目來處理使用entlib異常處理程序塊和Unity的所有異常。異常 - 無法吞服非空返回類型的方法的異常

當我嘗試使用統一的容器,我收到以下異常, 「不能吞嚥與非空返回類型的方法例外。」

如果我們嘗試調用一個void方法及其工作調用方法精細。

下面是代碼,下面

IUnityContainer unityContainer = new UnityContainer(); 
      unityContainer.LoadConfiguration("Container1"); 
      var service2 = unityContainer.Resolve<IABCServices>("Impl1"); 
      string dd= service2.DoSomething(55); 

它的配置文件中給出,

<alias alias="string" type="System.String, mscorlib"/> 
    <alias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" /> 
    <alias alias="transient" type="Microsoft.Practices.Unity.TransientLifetimeManager, Microsoft.Practices.Unity" /> 
    <alias alias="InterceptionConfigurationExtension" type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration" /> 
    <alias alias="EnterpriseLibraryCoreExtension" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Unity.EnterpriseLibraryCoreExtension, Microsoft.Practices.EnterpriseLibrary.Common" /> 
    <alias alias="ExceptionCallHandler" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.PolicyInjection.ExceptionCallHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling" /> 
    <alias alias="IABCServices" type="ABC.GGG.Integration.Contracts.SSSService.Interfaces.IABCServices, ABC.GGG.Integration.Contracts" /> 
    <alias alias="ABCServices" type="ABC.GGG.Integration.Implementation.SSSService.ABCServices, ABC.GGG.Integration.Implementation" /> 
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration" /> 

    <container name="Container1"> 
     <register type="string"></register> 
     <extension type="EnterpriseLibraryCoreExtension"/> 
     <extension type="Interception" /> 
     <register type="IABCServices"> 
      <interceptor isDefaultForType="true" type="TransparentProxyInterceptor"/> 
     </register> 
     <register name="Impl1" type="IABCServices" mapTo="ABCServices"> 
      <interceptionBehavior type="PolicyInjectionBehavior"/> 
     </register> 
     <interception> 
      <policy name="MyPolicy">      
       <matchingRule name="exceptionHandling" type="TypeMatchingRule"> 
        <constructor> 
         <param name="typeName"> 
          <value value="ABC.GGG.Integration.Contracts.SSSService.Interfaces.IABCServices" /> 
         </param> 
        </constructor> 
       </matchingRule> 
        <callHandler name="ExceptionHandlingCallHandler" type="ExceptionCallHandler"> 
        <lifetime type="singleton" /> 
        <constructor> 
         <param name="exceptionPolicy" dependencyName="Policy" />        
        </constructor> 
       </callHandler> 

      </policy> 
     </interception> 
     </container> 
</unity> 

誰能解釋一下如何解決這個問題?

回答

0

非void方法必須返回或拋出。消息表示您的配置嘗試吞服異常。它可能應該配置爲記錄異常並重新拋出它們。