2011-08-22 3 views
4

.NET에서 특정 메소드를 폐기로 표시하여 개발자가 사용되지 않는 메소드를 사용하려고 할 때 경고를 표시 할 수 있습니다.원시 메소드를 더 이상 사용되지 않거나 더 이상 사용하지 않는 것으로 표시 하시겠습니까?

<Obsolete("Do not call this method.")> Private Sub FormerMethod() 

중요한 것은 내가 제어하는 ​​클래스 내에서만 가능하다는 것입니다. 개발자가 .NET 또는 공급 업체에서 기본적으로 제공되는 클래스에서 특정 메서드를 사용하지 않도록하려면 어떻게해야합니까?

예를 들어 개발자가 Select이 아닌 DataTable에 맞춤 확장 방법을 선호하게하려면 어떻게해야합니까? 만약 Select을 사용하지 않으려면 DataTable 클래스의 사용자 정의 버전을 정의해야합니다. 그러면 사용자 정의 테이블이 사용되었는지 여부를 확인해야합니다.

저는 (FxCop) 같은 코딩 표준을 적용하는 데 유용한 도구가 있다는 것을 알고 있습니다. 그러나, 제 질문은 일부 타사 도구없이 처리 할 수 ​​있는지 여부입니다.

+1

코드 리뷰를 수행합니까? –

+0

+1 좋은 조언이기도합니다. – Tejs

답변

2

답변을 좋아하지 않을 수도 있지만 포장은 적절한 선택이라고 생각합니다.

타사 공급 업체 코드의 경우 단위 테스트를위한 추상 수준을 생성하기 위해 줄 바꿈이 필수적이어야합니다. 래퍼가되면 메서드를 Obsolete으로 표시 할 수 있습니다.

.NET 개체의 경우 약간 더 까다 롭습니다. 분명히 누군가는 네임 스페이스를 포함하고 마을에 갈 수 있습니다. 나는 당신이 원했던 것처럼이 문제에 대한 '코드 전용'솔루션이 있다고 믿지 않는다. 아마도 솔루션을 검색하고 원하지 않는 특정 메서드가 호출 될 때 실패하는 통합 테스트를 만드는 것일 것이다.

+0

.NET을 사용하면 내가하고 싶은 일을 할 수있게 해줄 수 있기 때문에 포장은 아마도 좋은 압정이라고 생각합니다. 감사! – Mario

2

.Net Framework 클래스를 사용되지 않는 것으로 표시하려면 모든 사용자가 사용하는 shared \ infrastructure 클래스 중 하나에서 다시 정의 할 수 있습니다.

예 :

namespace System.ComponentModel 
{ 
    [Obsolete("Please do not use BackgroundWorker. Use class XXXX instead.")]  
    public class BackgroundWorker 
    { 

    } 
} 

그것은 기본 메소드를 호출하지만 Obsolete 속성으로 장식되어 구체적인 방법을 원래의 닷넷 프레임 워크 클래스를 확장하고 재정 의하여 특정 메소드도 수행 할 수 있습니다.

그러나 어셈블리 클래스 별칭을 사용하여 원형 클래스 정의를 해결해야합니다.

+0

이 클래스는 System 클래스를 폐기하기 위해 작동하는 것으로 보입니다. –

관련 문제