Auf „protected“ und „private“ Eigenschaften unter C# zugreifen

Im Normalfall hat es gute Gründe das man auf bestimmte Eigenschaften einer Klasse nicht zugreifen kann. Manchmal ist es aber dennoch nützlich genau dies zu tun. So zum Beispiel bei der „NetworkStream“ Klasse welche im .NET/Mono Framework zu finden ist. Diese hat dabei die Eigenschaft „Socket“ welche „protected“ ist. Möchte man nun doch auf diese Eigenschaft zugreifen, so muss man zu etwas Magie in Form von Reflection greifen:

NetworkStream stream;
...
PropertyInfo pi=stream.GetType().GetProperty("Socket", BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance);
Socket socket=(Socket)pi.GetValue(stream, null);

Hier holt man sich mittels Reflection die Eigenschaft und castet sie. Anschließend hat man dann in der Variable „socket“ die entsprechende Eigenschaft und kann mit dieser dann machen was man möchte.

socket.io herunterladen

Bei Socket.IO handelt es sich um eine Javascript Bibliothek welche eine Socket basierte Kommunikation (unter anderem über Websockets und diverse Fallbacks) ermöglicht. Zu finden ist diese Bibliothek unter http://socket.io. Meist wird diese zusammen mit Node.js benutzt.

Möchte man allerdings nur den Client basierenden Teil benutzen so steht man im ersten Moment vor dem Problem das man keinen offiziellen Download dafür findet, da die Installation nur über „npm“ beschrieben wird. Allerdings wird man im Repository unter https://github.com/LearnBoost/socket.io-client/tree/master/dist fündig. Dort kann man sich die fertigen Clientdateien herunterladen und anschließend benutzen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Node.js
http://stackoverflow.com/questions/6587319/how-to-get-socket-io-0-7-client-file
http://stackoverflow.com/questions/6884413/socket-io-the-good-parts-and-the-bad-parts