chcę zrobić interfejs w języku C#, który określa metodę, która zawsze zwraca obiekt klasy wykonawczego, a więc:Czy mogę zmusić klasę wykonawczą do zwrócenia obiektu własnego typu?
public interface IParser {
IParser Parse(string s);
}
public class Parser : IParser {
public Parser Parse(string s) {
return new Parser(s);
}
}
mogę zmusić klasę wykonawczą, aby powrócić do obiektu własnego rodzaju? Jeśli to możliwe, to jak? Czy też generics to odpowiedź tutaj?
UWAGA: Kod jest tylko ilustracją, a nie coś, co powinien uruchomić.
Jesteś bardzo ciekawy: dlaczego próbujesz to zrobić? Ogólnie rzecz biorąc, definiowanie interfejsu polega na tym, że kod klienta może ufać, że określony interfejs API jest zdefiniowany w obiekcie, nie wiedząc ani nie dbając o konkretny typ tego obiektu. To jedna z największych zalet OOP. Co to jest, co próbujesz osiągnąć, robiąc to? –
Pomyślałem, że dzięki temu interfejsowi zawsze można ufać, że klasy implementujące interfejs będą miały tę metodę i że zawsze zwrócą swój własny typ. Ale jak mówisz, nie jest to najlepszy projekt OO i zamierzam go porzucić dla metody, która zwraca zamiast tego typ interfejsu. – Cros