2013-05-10 6 views
0

경고 컴파일러를 던졌습니다 C#에서 [실험] 태그를 만들 수있는 방법.나는이 기능을 사용하고있는 경우 경고를 던져 컴파일러에게</p> <pre><code>[Obsolete] void Foo() {} </code></pre> <p>이렇게 나는 같은 오래된 일부 기능을 표시 할 수 있습니다 C#에서

나는이 기능이 잘 테스트되지 않았고 문제가 발생할 수 있다는 코드를 작성한 사용자에게 경고 메시지를 던지면서 [Experimental]이라는 태그를 만들고 싶습니다.

가능합니까? 방법?

+0

지금까지 사용자 지정 경고 메시지를 쓸모없는 특성에 전달할 수 있음을 기억합니다. 코드를 Obsolete로 표시 할 수 있지만 메시지에서 실험 코드임을 알립니다. – Artemix

+0

http://msdn.microsoft.com/en-us/library/sw480ze8(v=vs.80).aspx – NT88

+0

머리글이 업데이트되어보다 명확 해졌습니다. 속성과 누군가가 그것을 downvoting했다. :/ – Petr

답변

0

속성으로 추가 할 수 있습니다. C# 컴파일러가 알고있는대로

[System.AttributeUsage(AttributeTargets.All)] 
public class Experimental: System.Attribute 
{ 

} 
+3

어떻게 컴파일러 경고를 생성합니까? – sloth

+1

이 모든 질문에 대한 답변이 먼저 업데이트되었습니다. -3에 대해서는 아무것도. –

+0

크리스는 무의미합니다.이 질문은 처음부터의 한 해답이었습니다. 나는 내 대답을 삭제했습니다. –

2

Obsolete 속성은 특별하다. 자신을 만들 수 없습니다. 가장 가까운 사람은 ObsoleteAttribute에서 상속하는 것이지만 클래스는 sealed이므로 이럴 수 없습니다.

그렇듯이 메서드를 [Obsolete("This method is not well tested.")]으로 표시 할 수 있습니다. 그게 당신이 할 수있는 최선의 방법입니다.

+1

Downvoter는 설명해 주실까요? 다른 솔루션과는 달리 컴파일러 경고 (또는 사용자가 기본 생성자 호출을 변경하도록 선택한 경우 오류)를 생성합니다. –

+2

ObsoleteAttribute는 sealed (http://msdn.microsoft.com/en-us/library/system.obsoleteattribute.aspx)로 표시되어 있으며 상속 할 수 없습니다. 또한 downvote하지 않았다 ...그러나 그것은 아마 누군가가 한 이유 일 것입니다. – Maciej

+5

나는 downvote를하지는 않았지만 ObsoleteAttribute는 봉인되었다. 이것은 – jure

0

PostSharp로 할 수 있다고 생각합니다. 이 SO에 대한 게시물을했지만, 지금은 북마크 링크가 ohly :

http://fgheysels.blogspot.com/2008/08/locking-system-with-aspect-oriented.html

컴파일 시간에 따라 검증 해당 페이지에서를, 당신은 저자가 그것을 어떻게 보여줍니다.

기타 참고 사항 : 배관 코드가 약간 포함됩니다. 확실히 "다양한 프로젝트에서"다양한 코드가 아닙니다.

12

[Obsolete]과 마찬가지로 컴파일러에서 경고를 생성하는 [Experimental]이라는 자체 특성을 만들려고합니다. 이것을 할 수 있습니까?

아니요, 죄송합니다. Obsolete은 매우 특별한 속성입니다. 컴파일러에는 특수 목적 코드가 있습니다. C#에는 확장 가능한 경고 메커니즘이 없습니다.

이 제안을 Visual Studio 팀에 제출하려면 http://visualstudio.uservoice.com/에서 할 수 있습니다.

관련 문제