Ich habe eine Anzahl von Klassen, die von einer abstrakten Klasse abgeleitet sind. In einer Methode erhalte ich ein Objekt, das eine der abgeleiteten Klassen ist. Ich muss den Typ eines Objekts überprüfen und einer korrekten Eigenschaft zuweisen. Die einfache Lösung funktioniert, sieht aber so aus, als könnte sie refaktoriert werden. Ich weiß nicht, wie es zu nähern, aber:C# Refactoring: Überprüfen Sie den Typ der abgeleiteten Klasse und weisen Sie sie einer Variablen derselben Klasse zu
public MyDerived1 derived1;
public MyDerived2 derived2;
// ....
public MyDerivedX derivedX;
public void AssignValue(MyBaseClass entity)
{
var derivedOne = entity as MyDerived1;
if (derivedOne != null)
{
derived1 = derivedOne;
return;
}
var derivedTwo = entity as MyDerived2;
if (derivedTwo != null)
{
derived2 = derivedTwo;
return;
}
// ....
var derivedEx = entity as MyDerivedX;
if (derivedEx != null)
{
derivedX = derivedEx;
return;
}
}
Warum nicht das ‚ist‘ Stichwort? Sehen Sie hier für weitere Informationen: https://msdn.microsoft.com/en-us/library/scekt9xw(v=vs.110).aspx –
Sie könnten nur eine Reihe von Anweisungen wie 'abgeleitete1 = Entität als MyDerived1;' – DavidG