I가 다음 자동 재산권의 DefaultValue 속성은 내 자동 재산권 작동하지 않습니다
[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }
나는이에 대한 기본값입니다 I 가정 false
때문이다 내가 거짓 기본을 찾을 코드 내부에 그것을 사용하려고 bool
변수는 누구에게 단서가 있습니까?
I가 다음 자동 재산권의 DefaultValue 속성은 내 자동 재산권 작동하지 않습니다
[DefaultValue(true)]
public bool RetrieveAllInfo { get; set; }
나는이에 대한 기본값입니다 I 가정 false
때문이다 내가 거짓 기본을 찾을 코드 내부에 그것을 사용하려고 bool
변수는 누구에게 단서가 있습니까?
DefaultValue 특성은 Visual Studio 디자이너 (예 : 양식 디자인시)에게 속성의 기본값이 무엇인지 알려주는 용도로만 사용됩니다. 코드에서 속성의 실제 기본값을 설정하지 않습니다. 여기
필립에게 감사드립니다. 그래서 유일한 해결책은 생성자에서 온 것이라고 생각합니다. 감사합니다 –
[DefaultValue]
은 (예를 들어) 직렬화하는 API (XmlSerializer
등), 및 일부 UI 요소 (PropertyGrid
등)에 의해 사용된다. 값 자체는 설정하지 않습니다.
public MyType()
{
RetrieveAllInfo = true;
}
또는 즉 자동으로 구현-속성을 사용하지 않고 수동으로 필드를 설정 : 당신은 그것을 위해 생성자를 사용해야합니다 이에 대한
private bool retrieveAllInfo = true;
[DefaultValue(true)]
public bool RetrieveAllInfo {
get {return retrieveAllInfo; }
set {retrieveAllInfo = value; }
}
한 해킹 this 링크입니다.
요약하면이 함수는 생성자 끝에서 호출하십시오.
static public void ApplyDefaultValues(object self)
{
foreach (PropertyDescriptor prop in TypeDescriptor.GetProperties(self)) {
DefaultValueAttribute attr = prop.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
if (attr == null) continue;
prop.SetValue(self, attr.Value);
}
}
이것은 위험하므로 사용하면 안됩니다. 파생 클래스가 속성 설정자를 작동시키는 데 필요한 모든 것을 설정할 수 있기 전에 기본 클래스 생성자가 완료되기 전에 파생 클래스의 속성을 설정합니다. – hvd
[유사한 질문] (http://stackoverflow.com/questions/705553/net-defaultvalueattribute-on-properties). VS2015에서 :'public bool RetrieveAllInfo {get; 세트; } = true;'[C# 6] (https://blogs.msdn.microsoft.com/csharpfaq/2014/11/20/new-features-in-c-6/) 기능입니다. – marbel82