我有一个类调用互联网服务来获取一些数据:
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。如何即时更改温莎绑定?