ich eine Schnittstelle in C# machen wollen, das ein Verfahren definiert, das immer ein Objekt der implementierenden Klasse zurückgibt, also:Kann ich eine implementierende Klasse zwingen, ein Objekt seines eigenen Typs zurückzugeben?
public interface IParser {
IParser Parse(string s);
}
public class Parser : IParser {
public Parser Parse(string s) {
return new Parser(s);
}
}
Kann ich eine implementierende Klasse zwingen, ein Objekt von seiner eigenen Art zurückzukehren? Wenn möglich, dann wie? Oder ist Generika die Antwort hier?
NB: Der Code ist nur eine Darstellung, nicht etwas, das angenommen hat, laufen.
Du hast mich sehr neugierig gemacht: Warum versuchst du das zu tun? Im Allgemeinen ist der Punkt, an dem eine Schnittstelle definiert wird, so, dass Client-Code darauf vertrauen kann, dass eine bestimmte API für ein Objekt definiert ist, ohne dass Sie wissen oder sich darum kümmern müssen, welcher konkrete Typ dieses Objekts ist. Das ist eine der großen Stärken von OOP. Was versuchst du damit zu erreichen? –
Nun, mein Gedanke war, dass Sie mit dieser Schnittstelle immer darauf vertrauen können, dass die Klassen, die die Schnittstelle implementieren, diese Methode haben und dass sie immer ihren eigenen Typ zurückgeben werden. Aber wie du sagst, ist dies vielleicht nicht das beste OO-Design und ich werde es für eine Methode aufgeben, die stattdessen den Interface-Typ zurückgibt. – Cros