Immer noch ein wenig frisch zu C#, ich habe eine "Dienstprogramm" -Klasse, die ich über mehrere interne Projekte hinweg verwenden möchte. In einem Projekt gibt es ein großes (hunderte von Eigenschaften, nicht mein Tun ...) internes Objekt (SpecialObj
). Die anderen Projekte haben keinen Zugriff auf dieses Objekt, und das Hinzufügen zu ihnen ist ein Nicht-Starter, so dass die Basismethode SpecialObj
nicht kennt.C# Erweiterung mit fast identischen Methoden
Also hier ist der Haken: MyMethod in MyClass (nimmt dieses spezielle Objekt nicht) und MyClassExtension (nimmt das spezielle Objekt) haben fast identische Code, mit Ausnahme für einen Teil in der Mitte, die dieses spezielle Objekt verwendet.
public class MyClass{
public string MyMethod (string param1, Dictionary<string, string> param2){
//some code in here part 1
//some code in here part 2
}
}
public class MyClassExtension : MyClass{
public string MyMethod (string param1, Dictionary<string, string> param2, SpecialOjb param3)
{
//some code in here part 1
//something with param3, my special object
//some code in here part 2
}
}
Aufrechterhaltung von 90% identischem Code in zwei Methoden scheint ... sehr falsch. Gibt es Beispiele oder Standards für diese Situation?
Könnten Sie hier Teil 1 'einige Code nicht erhalten 'und' einige Code in hier Teil 2 'in zwei anderen Methoden? –
Kann 'MyClass :: MyMethod' durch' MyClassExtension :: MyMethod' aufrufen? – Igor
@DanDumitru das ist ein wirklich, wirklich guter Gedanke ... vielleicht werde ich das versuchen. –