2013-06-12 2 views
7

사용자 정의 쓸모없는 클래스를 만들 수 있는지 궁금합니다. 나는 그것을 필요로하고 나는 그 사실을 싫어한다. 나의 입력 전에이 경고에 대한 구식이 보인다 : SOMETHING is Obsolete :.C# 사용자 정의 쓸모없는 속성

[CustomObsolete("Hello")] 
public int i = 0; 

안녕하세요 경고/디버그를 줄 것이다 : 난 그냥 단지 내 입력으로 필드/메소드를 사용하는 경우, 예를 들어, 그래서 경고/오류를주고 싶다.

이것이 가능합니까? # warning/# 오류를 사용하면 오류/경고가 항상 표시됩니다.

+0

jon이 맞다. 그렇다면 ... 확인하고 싶다면 http://www.dotnetperls.com/obsolete 또는 http://www.codeproject.com/Articles/107103/Use -Obsolete-attributes-to-indicating-Obsolete-Metho – terrybozzio

+0

내가 원하는 입력에 경고를주는 사용자 지정 특성을 원하기 때문에 궁금합니다. 그러나 나는 Obsolete와 함께 갈 것이라고 생각합니다. –

답변

6

아니요, ObsoleteAttribute은 C# 컴파일러에 효과적으로 하드 코딩되어 있습니다. C# 컴파일러에서 멤버가 사용되지 않음을 나타내는 자체 특성을 만들 수있는 방법이 없습니다.

개인적으로 나는 단지 ObsoleteAttribute과 함께 갈 것입니다 - 실제로는 입니다. "X는 사용되지 않음"으로 시작하는 것이 좋지 않습니까?

+0

나는 그것을 정말로 좋아하지 않지만 다른 옵션은없는 것 같다. –

0

당신이 사용자 정의 post-build task 것 원하는 것을 달성하기 위해

[Obsolete("Hello", false)] 
    public String foo() { 
     return "bar"; 
    } 
+0

내가 읽은 방식으로 OP는 ObsoleteAttribute를 인식하지만 오류가보고되는 방식을 좋아하지 않습니다. - "foo는 쓸모 없습니다 : 'Hello'" –

2

한 가지 방법 오류

[Obsolete("Hello", true)] 
    public String foo() { 
     return "bar"; 
    } 

와 경고

에만 쓸모 사용할 수 있습니다. 프로젝트를 컴파일 한 후 만든 다른 프로그램에서이 어셈블리를로드하고 사용자 특성에 맞게 구문 분석하십시오. 그런 다음 메시지를 출력 할 수 있습니다. 그러나이 속성이 사용되는 정확한 행 번호와 파일을 출력하는 것은 까다로운 작업입니다. 왜냐하면 pdb 파일을 구문 분석해야하고 디버그 모드에서만 제대로 작동하기 때문입니다.

.NET의 Obsolete 특성 만 고집하면됩니다. :-)