Schön zu sehen das auch Michael Dorn alias Worf Spaß beim Dreh hatte:
https://www.youtube.com/watch?v=CxDE2vskyms
Schön zu sehen das auch Michael Dorn alias Worf Spaß beim Dreh hatte:
https://www.youtube.com/watch?v=CxDE2vskyms
Wer auch immer diesen Sketch „geschrieben“ hat, wir wollen mehr davon:
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.
In JavaScript ist es durchaus möglich Enums anzulegen:
var Protocol =
{
PAMSG_REGISTER:0x0000, // D version, S username, S password, S email, S captcha response
APMSG_REGISTER_RESPONSE:0x0002, // B error, S updatehost, S Client data URL, B Character slots
PAMSG_UNREGISTER:0x0003, // S username, S password
}
Interessant wird es nun, wenn man versucht aus einer Zahl in diesem Beispiel der „2“ wieder einen Enum („APMSG_REGISTER_RESPONSE“) zu erzeugen. Hierbei hilft die Funktion „getEnumFromInteger“ welche wie folgt aussieht:
function getEnumFromInteger(enumWithValues, integer)
{
var keys = Object.keys(enumWithValues);
for (var i=0; i<keys.length; i++)
{
if(enumWithValues[keys[i]]==integer) return keys[i];
}
return null;
}
Damit wird der Enum durchiteriert und der entsprechende Schlüssel, welcher dem Integer entspricht, zurückgegeben.
Nehmen wir an: Zombies leben unter uns. Wären diese dann gesellschaftsfähig und würden akzeptiert? Zum Glück gibt es zu dieser Fragestellung jetzt die Antwort: