mam klasy A:ogólne contraints na klasy pochodnych
public class ClassA<T>
Klasa B pochodzi od:
public class ClassB : ClassA<ClassB>
klasy C pochodzi z klasy B:
public class ClassC : ClassB
Teraz mam metoda rodzajowa z ograniczeniami
public static T Method<T>() where T : ClassA<T>
OK, teraz chcę zadzwonić:
ClassC c = Method<ClassC>();
ale pojawia się błąd kompilacji mówiąc: Type argument 'ClassC' does not inherit from or implement the constraint type 'ClassA<ClassC>.
Jeszcze, kompilator pozwoli:
ClassB b = Method<ClassB>();
Rozumiem, że to się nie powiedzie, ponieważ ClassC
dziedziczy ClassA<ClassB>
zamiast ClassA<ClassC>
Moje pytanie brzmi, czy jest możliwe, aby utworzyć klasę wynikającą z ClassB
, które można wykorzystać w jakiś sposób z metody rodzajowe?
Może się wydawać, że generics są nadużywane i zgadzam się. Próbuję tworzyć warstwy biznesowe obiektów pochodzących z poddźwiękowych obiektów danych w oddzielnym projekcie.
Uwaga: Umieściłem < T> z dodatkowymi odstępami, w przeciwnym razie zostaną one usunięte z pytania.
Tak, to rozwiązuje problem. Metoda jest następująca: DB.Get < T > (string primaryColumnValue) T służy do zwrócenia obiektu danych z bazy danych. Wydaje się, że jest coraz bardziej skomplikowane, że musi być ... Muszę się cofnąć i przemyśleć ponownie o architekturze. – ptutt