내 속성 선언에서 "필드 :"가 필요한 이유는 [Field : Nonserialized]?
-
19-09-2019 - |
문제
어디에서나 C# 키워드로 나열된 "필드"를 찾을 수 없습니다. 누구든지 이것에 대한 배경을 아는 사람이 있습니까?
해결책
C# 컴파일러는 일반적으로 속성이 적용되는 선언의 일부를 파악하는 데 어려움이 없습니다. 당신이 그것을 사용할 수있는 세 가지 사례를 생각할 수 있습니다.
- 어셈블리에 적용되는 속성. AssemblyInfo.cs에서 매우 눈에 띄는다
- p/invoke 선언의 반환 값에 적용되는 속성, [return : marshalas
- 속성이 액세서리가없는 속성 또는 이벤트의 후원 변수에 적용되는 경우. 너의 경우.
다른 팁
예를 들어, 이벤트를 소개 할 수없는 것으로 표시하는 경우 필요합니다. 속성이 적용되는 대상을 지정합니다.
속성 대상 구문의 일부입니다. 로부터 사양:
attribute-target:
field
event
method
param
property
return
type
문서도 참조하십시오 NonSerializedAttribute
:
적용하려면
NonSerializedAttribute
클래스로 이벤트로 다음 C# 코드와 같이 속성 위치를 필드로 설정하십시오.
[field:NonSerializedAttribute()]
public event ChangedEventHandler Changed;
이는 필드에서 비 정기 속성을 설정할 수 있도록하기위한 것이며, 이벤트 직렬화에 유용합니다.
예를 들어, 이것은 컴파일 오류를 제공합니다
[NonSerialized]
public event SomeEventHandler SomeEvent;
이것을 해결하려면 사용해야합니다 field:
[field:NonSerialized]
public event SomeEventHandler SomeEvent;
여기에 더 자세히 대표 및 직렬화
Nonserializedattribute는 필드에만 적용 가능하며 다음과 같이 사용할 수 있습니다.
[NonSerialized]
public string myString;
제휴하지 않습니다 StackOverflow