我有召唤出一个互联网服务类来获得一些数据:编程修改在温莎城堡的依赖
public class MarketingService
{
private IDataProvider _provider;
public MarketingService(IDataProvider provider)
{
_provider = provider;
}
public string GetData(int id)
{
return _provider.Get(id);
}
}
目前我有两个供应商:HttpDataProvider和FileDataProvider。通常我会连接到HttpDataProvider,但如果外部Web服务失败,我想改变系统绑定到FileDataProvider。例如:
public string GetData(int id)
{
string result = "";
try
{
result = GetData(id); // call to HttpDataProvider
}
catch (Exception)
{
// change the Windsor binding so that all future calls go automatically to the
// FileDataProvier
// And while I'm at it, retry against the FileDataProvider
}
return result;
}
所以当这个被执行后,所有将来的MarketingService实例都会自动连接到FileDataProvider。有谁知道如何在飞行中更改Windsor绑定?
我们已经成功地使用了这个实现,但是我们的顶级消耗线程正在使用字典,因此我们将其更改为ConcurrentDictionary以使其线程安全,如下所示:https://blogs.msdn.microsoft.com/tess/2009/12/21 /高CPU-在净APP-使用-A-静态通用词典/ – Calum 2016-11-18 11:38:34