在我们的项目中,我们使用Enterprise library 5.0进行异常处理。现在,我们计划使用Enterprise Library 6.0,我们面临的问题是EnterpriseLibraryContainer.Current在Enterprise Library 6.0中不可用。
我找到了这个链接 Fluent API takes effect only once (Enterprise Library) 它提到了LogWriter 6.0的迁移。我想为ExceptionHandling做同样的事情。 以下是与我们的项目类似的示例代码。
EHConfigMgr.cs
var builder = new ConfigurationSourceBuilder();
var exceptionHandlingBuilder = builder.ConfigureExceptionHandling();
ServiceLocator.Current.GetAllInstances<IExceptionHandlingConfigurator>().ToList().ForEach(c => c.ConfigureExceptinHandling(exceptionHandlingBuilder));
exceptionHandlingBuilder.GivenPolicyWithName("WCF Exception Shielding")
.ForExceptionType<FaultException<ValidationFault>>()
.HandleCustom<WcfRethrowValidationFaultHandler>()
.ThenThrowNewException();
var tempAppConfigPath = Path.GetTempFileName();
File.Copy(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, tempAppConfigPath, true);
File.SetAttributes(tempAppConfigPath, FileAttributes.Normal);
var configSource = new FileConfigurationSource(tempAppConfigPath, false);
var s = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
Proxybase.cs
protected ProxyBase()
{
ExceptionManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
}
请帮助我更改代理库而不影响现有功能。