Ich hatte eine kurze Frage. Etwas scheint mit diesem Code wirklich falsch zu sein. Ich möchte die Vorteile von Generika und Delegaten und möglicherweise auch von generischen Delegaten nutzen. Ich arbeite mit einigen Code-generierten APIs und die generierten Objekte sind sehr ähnlich. Ich sehe, dass sie alle eine Schnittstelle implementieren, also sollte ich versuchen, eine Klasse mit ein paar Methoden zu erstellen, um die verschiedenen Szenarien zu behandeln. Hier ist ein Beispielcode. Es fühlt sich einfach auf vielen Ebenen falsch an. Bitte sag mir, wie ich diesen Code verbessern kann. Ein kleiner Refactoring-Tipp, wenn du willst. Und reiße es auf jeden Fall in Stücke. Ich möchte besser programmieren und lernen, Dinge richtig zu machen.Weisen Sie einen Delegaten basierend auf einem Typ zu?
private delegate IsomeEntity DisplayDelegate(IsomeEntity display);
public IsomeEntity Display<T>()
{
DisplayDelegate _del = null;
IsomeEntity display = factory.CreateObject(typeof(T).Name);
if (display.GetType() == typeof(ADisplayEntity))
_del = ADisplayEntity;
if (display.GetType() == typeof(BDisplayEntity))
_del = BDisplayEntity;
if (display.GetType() == typeof(CDisplayEntity))
_del = CDisplayEntity;
return _del(display);
}
public ADisplayEntity ADisplayEntity(IsomeEntity display)
{
ADisplayEntity ade = display as ADisplayEntity;
try
{
ADisplay o = new ADisplay();
ADisplayEntity response = o.ADisplay(ade);
return response;
}
catch (Exception ex)
{
Exception newEx;
if (someExceptionHandler.HandleException(ex, this, out newEx))
throw newEx;
}
return null;
}
public BDisplayEntity BDisplayEntity(IsomeEntity display)
{
BDisplayEntity dde = display as BDisplayEntity;
try
{
BDisplay o = new BDisplay();
BDisplayEntity response = o.BDisplay(bde);
return response;
}
catch (Exception ex)
{
Exception newEx;
if (someExceptionHandler.HandleException(ex, this, out newEx))
throw newEx;
}
return null;
}
Ich glaube, er diesen Code in das Anzeigeverfahren will, so dass er es nicht geben jedes Mal, wenn er eine ISomeEntity will hat – Randolpho