Przede wszystkim, pytanie: „Czy jesteś w stanie zdefiniować klasy implementacje w interfejsie? "
Odpowiedź brzmi: "w sposób/nie".
Nie można uwzględnić definicji klas "wewnątrz" definicji interfejsu, jeśli o to chodzi.
Jak wspomniano wcześniej, implementacja takiej rzeczy może się zdarzyć poprzez właściwości interfejsu.
Prawdopodobnie nie powinieneś próbować implementować opisanej struktury interfejsu, chyba że istnieją klasy, w których funkcjonalność kodu implementującego jest całkowicie zależna i czy interfejs jest już głęboko zintegrowany z kilkoma istniejącymi modułami. To samo w sobie jest wadą projektową i można go zastąpić implementacją klasy abstrakcyjnej.
Środowisko CLR nie obsługuje dziedziczenia wielokrotnego, ale pozwala typom implementować jeden lub więcej interfejsów oprócz dziedziczenia z klasy bazowej.Dlatego interfejsy są często używane do osiągnięcia efektu dziedziczenia wielokrotnego.
Wymaganie, aby klasy dziedziczyły z pojedynczej klasy bazowej, w większości przypadków sprawiłoby, że hierarchia klas była zbyt nieelastyczna. Aby wewnętrznie używać klasy bazowej w celu uproszczenia rozwoju biblioteki, członkowie publiczni powinni delegować pracę do klasy bazowej zamiast dziedziczyć z niej. Starannie wybrać między klasy abstrakcyjnej i interfejs przy projektowaniu abstrakcję jak może zachowywać się jak interfejs w to, że może zdefiniować członków, a to może podać szczegóły implementacji ale nie jest to wymagane, a może dodać członków, ile potrzeba wspierać dodatkową funkcjonalność ...
Więc, jeśli są stosowane w sposób, który chcesz, to odchodzi od koncepcji interfejsów C#, ale może wydawać się bliżej naśladować model dziedziczenia wielu języków takich jak: C++ w praktyce, ponieważ niejawnie "zmusza wszystkich implementatorów interfejsu do tworzenia instancji każdej klasy, która ma specyfikację interfejsu d właściwości dla.
Musisz trochę pomyśleć o powodzie, dla którego chcesz utworzyć taką strukturę (potrzeba wymuszenia wszystkich implementatorów interfejsu, aby utworzyć także wystąpienia klas, które interfejs definiuje jako właściwości).
Jest to bardziej prawdopodobne, błąd projektowy w kodzie niż brakująca funkcja językowa.
Więc nawet jeśli jest to możliwe obejście, nie nazwałbym go dobrym sposobem projektowania rzeczy ...
@roosteronacid: Jest to preferowana odpowiedź? – cseder