Frage

Ich habe eine Usercontrol mit wenigen boolean Eigenschaften in ihm. Ich mag sie standardmäßig auf true gesetzt werden, wenn nicht explizit in der ASPX-Seite eingestellt oder zumindest zwingt sie deklariert werden, wenn es keine Möglichkeit gibt, einen Standard festlegen. Ich weiß, dass es eine Möglichkeit, dies zu tun ist, weil viele Kontrollen Eigenschaften haben erforderlich, dass Ihre App brechen, wenn Sie versuchen, es zu laufen und sie sind nicht deklariert.

Wie kann ich das tun?

Beispiel:

<je:myControl runat="server" id="myControl" showBox="False">

Ich mag das System entweder brechen oder die Standardeinstellung auf „true“ gesetzt, wenn showBox aus dieser Erklärung verlassen wird.

Danke!

War es hilfreich?

Lösung

Definieren Sie Ihre Objekte mit ihren Standardwerten wie folgt aus:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
}

oder in Ihrer Kontrolle Konstruktor, Standardwerte:

public MyControl()
{
    _ShowBox = false;
}

oder Exception werfen, wenn es nicht belegt:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
    get { return _ShowBox; }
}

Andere Tipps

Ich weiß, ich bin spät dran, aber ich wollte nur erwähnen, dass

[DefaultValue(false)]

wird nicht das Attribut auf false gesetzt. Siehe: http://msdn.microsoft.com/en-us /library/system.componentmodel.defaultvalueattribute.aspx . Dort heißt es:

„A Default wird nicht dazu führen ein Mitglied automatisch mit dem Wert des Attributs initialisiert werden. Sie müssen den Anfangswert im Code festgelegt.“

Dieses Attribut ist nur in den Visual Studio-Designern, um anzuzeigen, was Sie als ein Standardwert sein. Wenn jemand Ihre Steuerung ändert diesen Wert verwenden, wird es angezeigt fett , um zu signalisieren, dass dieser Wert nicht-Standard.

Just stellen Sie den gewünschten Standardwert, wenn die Deklaration einer Variablen:

class myControl
{
    private bool _showBox = true;

    [PersistenceMode(PersistenceMode.Attribute), DefaultValue(false)]
    public bool showBox
    {
        get { return _showBox; }
        set { _showBox = value; }
    }
}

Optional Sie die Default für Designer hinzufügen können.

ReSharper empfiehlt eine Auto-Eigenschaft verwendet, und den Standardwert im Konstruktor Einstellung, etwa so:

public class MyControl
{
  public MyControl()
  {
    ShowBox = true;
  }

  public bool ShowBox { get; set; }
}  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top