Das Problem, das ich bin vor ist, dass, wenn ich habe eine Klasse mit einer Eigenschaft mit einem Standardwert wie folgt aus:Gibt es eine Möglichkeit, "ShouldSerialize [PropertyName]" für eine Property einer Property zu verwenden?
public class Border {
public Border() {
InitializeAdornment();
}
[DefaultValue(true)]
public bool Visible {
get;
set;
}
private void InitializeAdornment() {
Visible = true;
// Some initialization code here that don't do anything with the property...
}
}
Und es dann als eine Eigenschaft eines Usercontrol mit DesignerSerializationVisibility.Content
Attribut verwenden Sie darauf wie folgt aus:
public class Label : HitAbleControl, IText, IBorder {
public Label() {
InitializeAdornments();
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public Border Border {
get {
return __border;
}
set {
__border = value;
}
}
private Border __border;
private void InitializeAdornments() {
Border = new Border {
Visible = false
};
// Some initialization code here that don't do anything with the property...
}
}
Wenn ich die label1.Border.Visible = true
mit dem Visual Studio-Designer einstellen, wird es nicht serialisiert, aber es sollte als der Standardwert sollte in diesem Fall falsch und nicht wahr sein.
Ich weiß, dass ich die Border
Klasse, wenn der Standardwert immer serialisiert ändern könnte oder sollte wahr oder falsch sein, zu überprüfen, aber ich würde gerne wissen, ob es so etwas wie ein ShouldSerialize[PropertyName]
auf eine Eigenschaft einer Immobilie oder eine weitere Problemumgehung für dieses Serialisierungsproblem, ohne den Serializer zu ändern.
Ich suchte stundenlang versucht, dieses Problem zu lösen, ohne an eine CodeDomSerializer
zu appellieren, oder zumindest zu verstehen, warum der Visual Studio Designer dies nicht serialisieren.
Jede Hilfe wird geschätzt, danke!
Brauchen Sie wirklich die 'Border'-Eigenschaft, die öffentlich einstellbar ist? –
@Ivan Stoev In meinem ursprünglichen Code implementiert die Label-Klasse INotifyPropertyChanged, der Einfachheit halber habe ich es so geändert, dass nur das Backing-Feld hier steht – LoRdPMN
INPC ist nicht essentiell, meine Frage war, ob es von außen einstellbar sein sollte. Wenn Sie Klasseninstanzen haben, legen Sie sie normalerweise intern in einem Konstruktor fest und lassen nur deren Eigenschaften von außen einstellbar sein. Ich frage, weil es wichtig ist. –