| 

.NET C# Java Javascript Exception

1
Hallo allerseits.
Es geht mal wieder um .NET Interna. In der Klasse EntityCollection wird die Schnittstelle IListSource Implementiert. Diese bietet die Methode GetList.

Fakt 1: Im Reflector sehe ich auch die Schnittstelle allerdings nicht die GetList



Fakt 2: Im Code habe ich GetList nur im Zugriff wenn ich auf ILIstSource caste

Dim eCol As New EntityCollection(Of Customer)
Dim a = CType(eCol, IListSource).GetList() 'Möglich
Dim b = TypeOf eCol Is IListSource 'Liefert True also ist IListSource definitiv implementiert!

Dim f = eCol.GetList() ' Compile Fehler: GetList ist kein Member von EntityCollection


Frage: Bisher bin ich davon ausgegangen das ich immer auf alle per Interface implementierten Member direkten Zugriff habe. Hier scheint das aber nicht der Fall zu sein. Warum ist das so? Welcher Mechanismus steckt dahinter?

Gruß Thomas Sczyrba
01.04.2011
Thomas Sczyrba 1,4k 1 2 9
Thomas Sczyrba 1,4k 1 2 9
1 Antwort
1
Der Mechanismus heißt "explizite Implementierung eines Interface", und er bewirkt genau das, was Du beobachtest: die Member des Interface sind nur zu sehen, wenn Du das Objekt auf das Interface castest. In der MSDN-Doku von EntityCollection siehst Du ganz am Ende den Abschnitt "explizite Schnittstellen-Implementierungen", und dort ist auch IListSource.GetList() aufgeführt.
01.04.2011
Matthias Hlawatsch 13,2k 4 9
Danke für die Info. Ich erstelle jetzt mal eine neue Frage warum man das nutzen sollte. P.S. der von Matthias erwähnte MSDN Eintrag ist hier zu finden: http://msdn.microsoft.com/de-de/library/bb352821%28v=VS.90%29.aspx
Thomas Sczyrba 01.04.2011

Stelle deine .net-Frage jetzt!