Wie ich hier lese Ссылка
Es ist möglich, in eine Interface-Klasse zu bekommen, ABER NICHT gesetzt?
Also, wenn ich Getter und Setter in Interface will, muss ich die alte Syntax getVar setVar erstellen, nur weil die neue Syntax nicht in die Interface Class Syntax passt?
Update: Wenn ich Set in Interface-Klasse weglassen muss, bedeutet dies, dass ich keine Klasse erzwingen kann, um Setter zu haben, der den Zweck einer Interface-Klasse in diesem Fall besiegt, wie ich nur teilweise erzwingen kann?
Nein. Ich glaube, du hast es falsch verstanden. In diesem Artikel geht es um die Möglichkeit , eine Schnittstelle mit einer schreibgeschützten Eigenschaft (eine Eigenschaft mit nur getter) zu haben. Aber wenn Sie möchten, können Sie auch den Setter in die Schnittstelle einfügen:
%Vor%Sie können die Eigenschaftensyntax verwenden. Verwenden Sie diese Kombination:
%Vor%Sie können natürlich vollständige Implementierungen für die Getter in Something.Test hinzufügen, wenn Sie möchten. Ich habe nur Hintergrundfelder zur Abkürzung verwendet.
Denken Sie daran, dass eine Schnittstelle das Minimum an Dingen definiert, die Sie implementieren müssen. Sie können jede Soße (neue Methoden, Accessoren, Mitglieder, usw.) oben hinzufügen, die Sie wollen. Sie könnten sogar einen öffentlichen Setter hinzufügen:
%Vor%Die einzige Einschränkung ist, dass jemand die hinzugefügte Soße nicht verwenden kann, es sei denn, sie haben eine Referenz des konkreten Typs (die Klasse, nicht die Schnittstelle) oder eine andere Schnittstelle, die die von Ihnen hinzugefügten Methoden definiert.
Ja, einfach set;
aus der Eigenschaftsdeklaration weglassen. Zum Beispiel:
Wenn Sie nur die Verfügbarkeit wünschen, verwenden Sie einfach {get;private set;}
Die Klasse, die im vorherigen Beispiel gezeigt wird, ist änderbar. Client-Code kann die Werte in Objekten ändern, nachdem sie erstellt wurden. In komplexen Klassen, die sowohl signifikantes Verhalten (Methoden) als auch Daten enthalten, sind oft öffentliche Eigenschaften erforderlich. Für kleine Klassen oder Strukturen, die nur eine Menge von Werten (Daten) kapseln und wenig oder keine Verhaltensweisen haben, wird empfohlen, die Objekte unveränderlich zu machen, indem der set-Accessor als privat deklariert wird. Weitere Informationen finden Sie unter Vorgehensweise: Implementieren einer Lightweight-Klasse mit automatisch implementierten Eigenschaften (C # -Programmierhandbuch).
Attribute sind bei automatisch implementierten Eigenschaften erlaubt, aber offensichtlich nicht bei den Hintergrund-Feldern, da diese nicht von Ihrem Quellcode aus zugreifbar sind. Wenn Sie ein Attribut für das Hintergrundfeld einer Eigenschaft verwenden müssen, erstellen Sie einfach eine reguläre Eigenschaft.
Tags und Links c#