Polymorphismus und überladen mit statischen Methoden in C#.

Ich habe versucht, Sie zu erzeugen, ein Werk zurückgeben sollte, ein anderes Objekt, ein " common interface (sagen Item) nach der input-parameter (ich nenne es einen Zusammenhang) der Funktion getItem(A context)

Nun, angenommen ich definiere einen neuen Typ von Kontext: B was erbt von A.

Ich wollte wieder eine andere Sache, je nachdem, ob das übergebene Objekt die factory war Klasse B oder A.

Ich versuchte zu tun, wie folgt (überladen die Methode):

class Factory
{
   static Item getItem(A context) {...}
   static Item getItem(B context) {...}
}

Dies funktioniert gut, wenn ich etwas wie das hier tun:

B bContext=new B();
Item it=Factory.getItem(bContext);

Jedoch, wenn ich die Darsteller und Objekt Typ A:

A bContext=(A) new B();
Item it=Factory.getItem(bContext);

dem ersten factory-Methode aufgerufen wird.

Dachte ich, dass Polymorphismus wäre sicherzustellen, dass die Ausführung der zweiten Methode, die auch nach der Besetzung, und ich würde gerne wissen, ob ich etwas verpasst?

Ich bin mir bewusst, dass ich Schritt halten konnte, mit einer einzigen Methode, und verwenden Sie die is - operator, um zu überprüfen, welchen Typ die variable ist, aber ich dachte, die Lösung, die ich oben präsentiert wurde, ein bisschen mehr elegant.

InformationsquelleAutor SRKX | 2011-07-28
Schreibe einen Kommentar