Wie erstelle ich eine fließende Oberfläche in C # mit einigen Einschränkungen für einige Methoden?

8

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.

    
Hamed 26.04.2016, 10:17
quelle

5 Antworten

1

Sie sollten eine Schnittstelle zurückgeben, die nur And() und Or() enthält. Zum Beispiel:

%Vor%     
yaakov 26.04.2016, 10:21
quelle
3

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

    
Macke 26.04.2016 10:20
quelle
2

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.

    
Meirion Hughes 26.04.2016 13:37
quelle
0
%Vor%     
Dinesh Tripathi 26.04.2016 15:17
quelle
0

Das scheint zu funktionieren.

%Vor%

Und Sie sind jetzt auf solche Muster beschränkt, wenn Sie die Anrufe tätigen:

%Vor%     
John Page 17.07.2016 19:37
quelle