Gibt es eine einfache Möglichkeit, eine Instanz unveränderlich zu machen?
Lassen Sie uns ein Beispiel machen: Ich habe eine Klasse, die viele Datenfelder enthält (nur Daten, kein Verhalten). ):
class MyObject
{
// lots of fields painful to initialize all at once
// so we make fields mutable :
public String Title { get; set; }
public String Author { get; set; }
// ...
}
Beispiel für die Erstellung:
MyObject CreationExample(String someParameters)
{
var obj = new MyObject
{
Title = "foo"
// lots of fields initialization
};
// even more fields initialization
obj.Author = "bar";
return obj;
}
Aber jetzt, da ich mein Objekt vollständig erstellt habe, möchte ich nicht mehr, dass das Objekt veränderbar ist (da der Datenkonsument den Status nie ändern muss). also hätte ich gerne so etwas wie List.AsReadOnly:
var immutableObj = obj.AsReadOnly();
Aber wenn ich dieses Verhalten möchte, muss ich eine andere Klasse erstellen, die genau die gleichen Felder hat, aber ohne Setter.
Gibt es also eine automatische Möglichkeit, diese unveränderliche Klasse zu generieren? Oder eine andere Möglichkeit, Veränderlichkeit während der Erstellung zu ermöglichen, aber nach der Initialisierung unveränderlich zu bleiben?
Ich weiß, dass Felder als „schreibgeschützt“ markiert werden können, aber das Objekt wird außerhalb der Klasse initialisiert , und die Übergabe aller Felder als Konstruktorparameter scheint eine schlechte Idee zu sein (zu viele Parameter).
Gibt es eine einfache Möglichkeit, eine unveränderliche Version einer Klasse zu erstellen? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Gibt es eine einfache Möglichkeit, eine relationale HTML -Auswahl zu treffen?
by Anonymous » » in HTML - 0 Replies
- 1 Views
-
Last post by Anonymous
-