15

いくつかのブール値プロパティを持つ UserControl があります。.aspx ページで明示的に設定されていない場合はデフォルトで true に設定するか、デフォルトを設定する方法がない場合は少なくとも強制的に宣言するようにします。多くのコントロールには、アプリを実行しようとするとアプリを壊す必須プロパティがあり、それらが宣言されていないため、これを行う方法があることはわかっています。

どうすればいいですか?

例:

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

showBox がこの宣言から除外されている場合、システムが中断するか、デフォルトを「true」に設定する必要があります。

ありがとう!

4

4 に答える 4

27

遅れたことはわかっていますが、それについて言及したかっただけです

[DefaultValue(false)]

属性を false に設定しません。http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspxを参照してください。それは言います:

「DefaultValueAttribute によって、メンバーが属性の値で自動的に初期化されることはありません。コードで初期値を設定する必要があります。」

この属性は、Visual Studio デザイナでデフォルト値と見なされるものを示すためだけのものです。コントロールを使用しているユーザーがこの値を変更すると、この値がデフォルトではないことを示すために太字で表示されます。

于 2011-01-26T17:41:18.163 に答える
22

次のようなデフォルト値でプロパティを定義します。

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

または、コントロールのコンストラクターで、デフォルト値を設定します。

public MyControl()
{
    _ShowBox = false;
}

または、割り当てられていない場合は例外をスローします。

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
    get { return _ShowBox; }
}
于 2009-05-04T07:23:01.350 に答える
2

変数を宣言するときに、必要なデフォルト値を設定するだけです:

class myControl
{
    private bool _showBox = true;

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

オプションで、デザイナーの DefaultValueAttribute を追加できます。

于 2009-05-04T07:22:35.110 に答える
2

ReSharper は、次のように、自動プロパティを使用し、コンストラクターでデフォルト値を設定することをお勧めします。

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

  public bool ShowBox { get; set; }
}  
于 2013-08-08T17:00:43.293 に答える