실험적 특성 (ExperimentalAttribute)
메모
이 문서는 기능 사양입니다. 사양은 기능의 디자인 문서 역할을 합니다. 여기에는 기능 디자인 및 개발 중에 필요한 정보와 함께 제안된 사양 변경 내용이 포함됩니다. 이러한 문서는 제안된 사양 변경이 완료되고 현재 ECMA 사양에 통합될 때까지 게시됩니다.
기능 사양과 완료된 구현 간에 약간의 불일치가 있을 수 있습니다. 관련 차이는 언어 디자인 모임(LDM) 노트에기록되어 있습니다.
사양문서에서 C# 언어 표준으로 기능 스펙릿을 채택하는 프로세스에 대해 자세히 알아볼 수 있습니다.
System.Diagnostics.CodeAnalysis.ExperimentalAttribute
표시된 형식 및 멤버에 대한 참조에 대한 경고를 보고합니다.
namespace System.Diagnostics.CodeAnalysis
{
[AttributeUsage(AttributeTargets.Assembly |
AttributeTargets.Module |
AttributeTargets.Class |
AttributeTargets.Struct |
AttributeTargets.Enum |
AttributeTargets.Constructor |
AttributeTargets.Method |
AttributeTargets.Property |
AttributeTargets.Field |
AttributeTargets.Event |
AttributeTargets.Interface |
AttributeTargets.Delegate, Inherited = false)]
public sealed class ExperimentalAttribute : Attribute
{
public ExperimentalAttribute(string diagnosticId)
{
DiagnosticId = diagnosticId;
}
public string DiagnosticId { get; }
public string? UrlFormat { get; set; }
public string? Message { get; set; }
}
}
보고된 진단
진단은 형식적으로는 경고이지만, 컴파일러에서 이를 억제할 수 있도록 허용합니다. 그러나 보고 목적에서는 오류로 간주됩니다. 이로 인해 진단이 억제되지 않으면 빌드가 실패합니다.
진단은 다음 중 하나인 형식 또는 멤버에 대한 모든 참조에 대해 보고됩니다.
- 속성으로 표시됨
- 속성으로 표시된 어셈블리나 모듈에서
[Experimental]
멤버 내에서 참조가 발생하는 경우에는 자동으로 억제됩니다.
명시적 컴파일러 옵션 또는 #pragma
같은 일반적인 방법으로 진단을 억제할 수도 있습니다.
예를 들어 API가 [Experimental("DiagID")]
또는 [Experimental("DiagID", UrlFormat = "https://example.org/{0}")]
로 표시된 경우 #pragma warning disable DiagID
로 진단을 억제할 수 있습니다.
실험적 특성에 지정된 진단 ID가
Message
속성의 값이 제공되지 않으면 진단 메시지는 특정 메시지로, 이 메시지에서 '{0}'
은 정규화된 형식 또는 멤버 이름을 나타냅니다.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates.
Message
속성에 대한 값이 제공되면 진단 메시지는 특정 메시지입니다. 여기서 '{0}'
은 완전히 자격이 부여된 형식 또는 멤버 이름이고 '{1}'
는 Message
과 관련이 있습니다.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.
특성은 기본 형식 또는 재정의된 멤버에서 상속되지 않습니다.
ObsoleteAttribute 및 DeprecatedAttribute
[Experimental]
대한 경고는 [Obsolete]
또는 [Deprecated]
멤버 내에서 보고됩니다.
[Obsolete]
및 [Deprecated]
에 대한 경고 및 오류는 [Experimental]
구성원 내에 보고됩니다.
그러나 [Obsolete]
및 [Deprecated]
대한 경고 및 오류는 여러 특성이 있는 경우 [Experimental]
대신 보고됩니다.
C# feature specifications