Angesichts der neuen dynamischen Unterstützung in C# 4 ist es möglich, eine Klasse so zu schreiben, dass eine Methode aufgerufen wird Instanz und diese Methode ist nicht vorhanden, wird der Versand an eine andere Methode übergeben? Dies könnte etwa so aussehen:Behandeln einer C# -Methode, die nicht für ein dynamisches Objekt definiert ist (aka respond_to/method_missing)
public class Apple : ... {
// ...
private ... MethodMissing(string name, ...) {
if (name == "TurnIntoOrange") {
// do something
}
}
}
dynamic d = new Apple();
d.TurnIntoOrange(); // Not actually defined on Apple; will pass to MethodMissing.
Andere Sprachen nennen würde diese „method_missing Unterstützung“, unter dem allgemeineren Begriff des metaprogramming. Ich bin nicht sicher, was C# das spezifisch nennt. Aber ist es möglich?
Wow, danke Jon! –
Ich habe darauf in meinem Titel angespielt, aber habe es nicht direkt im Körper gefragt: Gibt es eine ähnliche Überschreibung, die ich verwenden würde, um eine "Antworten" -Methode nachzuahmen? Ich sehe, dass ich das Ergebnis von TryInvokeMember überprüfen kann, aber das kann unerwünschte Nebenwirkungen haben. –
Nein, ich glaube nicht, dass es eine Möglichkeit gibt, nach einer dynamischen Methode zu fragen, ob sie mit irgendetwas umgehen wird - obwohl Sie GetDynamicMemberNames als Ausgangspunkt verwenden könnten. –