У меня есть два идентичных методов, но один из них оператор возврата внутри try catch
Как избежать дублирования кода внутри двух методов?
public void A(Guid agentId)
{
var agent = _agentsProvider.GetAgentById(agentId);
var updateCompletionSource = C(agentId);
try
{
var cacheEntry = UpdateAgentMetadataCacheEntry(agent, true, false);
updateCompletionSource.SetResult(cacheEntry);
}
catch (Exception e)
{
updateCompletionSource.SetException(e);
}
}
private Entry B(IAgent agent)
{
var updateCompletionSource = C(agent.Id);
try
{
var cacheEntry = UpdateAgentMetadataCacheEntry(agent, false, false);
updateCompletionSource.SetResult(cacheEntry);
return cacheEntry;
}
catch (Exception e)
{
updateCompletionSource.SetException(e);
return GetPreviousCacheEntry();
}
}
Как собрать идентичную часть и создать новый метод с этой частью?
Я не понимаю ваш вопрос, что не так с кодом, который у вас здесь есть? http://stackoverflow.com/help/how-to-ask – CodingGorilla
Вы должны реорганизовать свой код и позвонить A Внутри B, где B расширяет предложение уловить A, вы должны выбросить ошибку, чтобы зацепиться на верхнем уровне (B mehtod) – darkndream
Если я что-то не упустил, этот код вообще не будет компилироваться. Вы ссылаетесь на 'agent' в' A', но он не существует в 'A', только в' B'. Эта строка в 'A' должна быть' var cacheEntry = UpdateAgentMetadataCacheEntry (agent.Id, true, false); '?? – Tim