Ich glaube, ich kenne die Antwort auf diese Frage, aber es gibt immer viele Möglichkeiten, Dinge zu tun (von denen einige eindeutig falsch sind :) )...
Ich habe eine kleine rekursive Funktion, um eine Mitarbeiter-Manager-ID zu finden. Dies wird in einem Import-Skript verwendet, und es kann sein, dass die Personen unmittelbaren Manager verlassen hat (deaktiviert wurde), so dass wir brauchen, um zu finden, dass Mitarbeiter (der Manager) Manager (und so weiter), so dass wir Sachen zuweisen können. für den Fall, dass es nicht offensichtlich ist, ist die EmployeesToDisable eine generische Liste der Mitarbeiter, die als deaktiviert in diesem Import markiert sind.
Ich schätze, was ich wirklich frage, ist: ist der Overhead mit dem Abfangen einer Ausnahme zu viel von einem Kompromiss in diesem Fall zu machen verbunden. und sollte ich dies anders tun. dies funktioniert gut, aber fühlt sich wie es ist schlechte Form
Ich habe folgenden Code:
private Guid getMyEnabledManagersID(OnlineEmployee e)
{
Employee manager;
try
{
//see if Employee e's manager is in the disabled list.
manager = (from emp in EmployeesToDisable where emp.EmployeeID.Equals(e.ManagerID) select emp).Single();
//yes they are, so need to call this again
return getMyEnabledManagersID(manager);
}
catch
{
return e.ManagerID;
}
}