olampl schrieb:Bei der Implementierung von Interfaces muessen alle vom Interface deklarierten Methoden Public implementiert werden -> wenn nicht gibts nen Compilererror. Ausserdem dienen Interfaces dazu immer ein Minimum an Funktionalitaet bereitzustellen/sicherzustellen.
Sorry das ist falsch. Interface Methoden/Properties lassen sich in C# auch als Private implementieren und sind dann nur über das Interface selbst erreichbar bzw. aufrufbar. Was den Compilerfehler angeht, wenn du die Interface Member implizit implementierst, könnte es schon die Ursache für den Compilerfehler sein.
Mit einem Interface kannst du die Klasse auch nur "markieren" ohne direkt Member implementieren zu müssen. Dadurch wird jedoch keine Funktionalität implementiert! Das macht Sinn wenn du nur bestimmte Klassen-Objekte in den Funktionalitäten erlauben oder in Generic-Klassen nur auf bestimmte Klassen einschränken willst.
Code:
public interface Test
{
}
public class MyTest : Test
{
}
public class MyTest2
{
}
public class GenericTest<T> where T : Test
{
}
GenericTest<MyTest> test1; // ok, weil markiert
GenericTest<MyTest2> test2; // Compilerfehler, weil nicht markiert
Zuletzt bearbeitet: