Siehe die folgenden Codes:
%Vor%Ich möchte dafür eine fließende Oberfläche erstellen Aber ich brauche, nach Add () - Methodenentwickler siehe Nur Oder () oder Und () und Nach einem dieser Schritte, siehe Nur hinzufügen () -Methode.
so kann niemand einen Code schreiben wie:
%Vor%Ich möchte eine Einschränkung für einige Methoden haben kann spezielle Methoden und etc. akzeptieren Ich kann alle Methoden in einer Klasse schreiben und diese für jeden einzelnen zurückgeben, aber das ist nicht geeignet !!!
Bitte führen Sie mich durch. Schreiben Sie die Advanced Fluent Interface-Klasse.
Um Dinge einzuschränken, müssen Sie ein (möglicherweise mehrere) "Builder" -Objekte erstellen und zurückgeben, die spezielle Operationen ausführen können, wobei ein Verweis auf die Hauptklasse beibehalten wird.
%Vor%Verwenden Sie internen Zugriff, um die Verwendung einzuschränken.
Um das Erstellen von Müll zu vermeiden, speichern Sie eine SubConditionCreator-Referenz in der Hauptklasse
Es gibt keinen wirklich einfachen Weg, den ich kenne, um das zu lösen. Vielleicht hilft T4 Templating, aber bisher musste ich immer den Entscheidungsbaum mit einer expliziten Schnittstelle an jedem Knoten aufbauen. Beispielsweise; Nehmen wir an, Ihr Entscheidungsbaum ist eine Endlosschleife, dann (entsprechend implementiert):
%Vor%Es wird schwierig, wenn Sie eine endliche Schleife wollen; sag null zu zwei Adds:
%Vor%Sie können (explizit) diese in einer einzigen Klasse implementieren, die als Zustandsmaschine fungiert:
%Vor% Hier würden Sie this
für Add()
And()
Or()
zurückgeben und diese Statusänderungen und -reihenfolge beibehalten.
Ich hoffe, einige Antworten auf diese Frage mit einem besseren Weg, jeden Knoten manuell zu schreiben.
Tags und Links c# fluent-interface method-chaining