문제

몇 가지 부울 속성이있는 usercontrol이 있습니다. .aspx 페이지에서 명시 적으로 설정하지 않으면 기본적으로 true로 설정되거나 기본값을 설정할 방법이 없으면 최소한 선언하도록 강요합니다. 많은 컨트롤이 앱을 실행하려고 할 때 앱을 끊는 속성이 필요하고 선언되지 않았기 때문에이 작업을 수행 할 수있는 방법이 있다는 것을 알고 있습니다.

어떻게해야합니까?

예시:

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

Showbox 가이 선언에서 제외 된 경우 시스템이 기본값을 "True"로 설정하기를 원합니다.

감사!

도움이 되었습니까?

해결책

다음과 같은 기본값으로 속성을 정의하십시오.

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; }
}

다른 팁

내가 늦었지만 그냥 언급하고 싶었어

[DefaultValue(false)]

속성을 False로 설정하지 않습니다. 보다: http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx. 그것은 말한다 :

"DefaultValueAttribute는 멤버가 속성의 값으로 자동 초기화되지 않습니다. 코드에서 초기 값을 설정해야합니다."

이 속성은 Visual Studio Designer에서 기본값으로 간주하는 것을 나타내는 것입니다. 귀하의 컨트롤을 사용하는 사람 이이 값을 변경하면 표시됩니다. 굵게 이 값이 비다의 값임을 알리기 위해.

변수를 선언 할 때 원하는 기본값을 설정합니다.

class myControl
{
    private bool _showBox = true;

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

선택 사항 디자이너의 DefaultValueatTribute를 추가 할 수 있습니다.

Resharper는 자동 프로퍼티를 사용하고 생성자에서 기본값을 설정하는 것이 좋습니다.

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

  public bool ShowBox { get; set; }
}  
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top