Ist es angesichts der neuen dynamischen Unterstützung in C # 4 möglich, eine Klasse so zu schreiben, dass, wenn eine Methode für eine Instanz aufgerufen wird und diese Methode nicht vorhanden ist, der Dispatch an eine andere Methode übergeben wird? Das könnte etwa so aussehen:
%Vor%Andere Sprachen würden diese "method_missing support" unter der allgemeineren Überschrift der Metaprogrammierung nennen. Ich bin nicht sicher, was C # das spezifisch nennt. Aber ist es möglich?
Absolut. Implementieren Sie entweder IDynamicMetaObjectProvider
oder leiten Sie sie von DynamicObject
für eine viel einfachere Route. In der DLR-Dokumentation finden Sie einige gute Beispiele.
Hier ist ein kurzes Beispiel für DynamicObject
:
<plug>
Ich habe ein größeres Beispiel für DynamicObject
in der zweiten Ausgabe von C # in Depth , aber ich habe IDyamicMetaObjectProvider
noch nicht implementiert. . Ich werde das vor der Veröffentlichung des Buches tun, aber die frühe Zugriffsversion hat momentan nur das Beispiel DynamicObject
. BTW, wenn Sie es heute kaufen, ist es der halbe Preis - verwenden Sie den Code twtr0711 . Ich werde diese Antwort später bearbeiten, um dieses Bit zu entfernen:)
</plug>