Problem mit Generics
- 
					
					
					
					
 Hallo zusammen, folgende Deklaration eines Interface habe ich: public interface MyInterface<T> where T : IMyClass { void SubscribeEvents(T myClass); //... other methods }Den Parameter T habe ich gewählt, weil ich je nach konkreter IMyClass andere Events abonnieren möchte. Nun macht mir aber folgende Klasse Schwierigkeiten: public class Main { private MyInterface</*...*/> foo; // Fehler -> ich weiß aber nicht, was T ist private IMyClass concreteMyClass;Main soll irgendein Child von MyInterface halten. Nur was soll ich ihn die <> Klammern schreiben? T ist der Typ von "concreteMyClass". Kann man dieses Problem irgendwie beheben? 
 
- 
					
					
					
					
 Nur mal zum Verständnis. Du willst also sowas: class MyClass1: IMyClass { /* Code */ } class MyClass2: IMyClass { /* Code */ } public class Main { //Option1: private MyInterface<MyClass1> foo; private IMyClass concreteMyClass; // ist MyClass1 //Option2: private MyInterface<MyClass2> foo; private IMyClass concreteMyClass; // ist MyClass2 }Warum machst du Main nicht auch generisch ? public class Main<T> where T : IMyClass { private MyInterface<T> foo; private T concreteMyClass; }Weil irgendwann musst du ja festlegen welchen Typ foo hat. Das geht aber ja nicht zur Runtime und abhängig vom Typ von concreteMyClass, sondern muss zur Compilezeit feststehen. 
 
- 
					
					
					
					
 Habe gerade kein Compiler zur Hand, aber meine Idee waere dass du nicht das Interface generisch machst, sondern die Methode die in dem Interface deklariert wird.