2017-10-06 2 views
1

누군가 내 SDK에서 특정 유형의 새 클래스를 만들려고 할 때 메시지를 표시하고 싶습니다. 현재, 나는이 의견 클래스의 모든 속성이 있습니다 (추상?) 클래스를 사용하려고 시도 할 때 구현되지 않음 메시지 표시

/// <summary> 
/// This class and its use is not implemented in (my) SDK 
/// </summary> 

은 2 가지 방법이 있습니다와 SDK의 사용자가 사용할 때 그들에게

그러나 이것은 단지 쇼에 액세스 할 필요가 없습니다

클래스의 속성에 대한 Intellisense.

Cannot create an instance of the abstract class or interface 'MyClass1' 

이 개발자는 클래스가 기능하기 때문에 인스턴스화 할 수 없음을 알려, 어떤 방법으로 가능할 것이다 : 나는 추상적으로 클래스를 설정하면 새 인스턴스를 만들려고 할 때 , 나는이를 얻을 수 SDK에서 구현되지 않은 클래스를 사용합니까? [NotImplemented] 속성의 라인을 따라 뭔가 있을까요?

+0

아마도 '폐기 됨'속성입니까? 기술적으로 당신이 찾고있는 것은 아니지만 개발자가 사용해서는 안된다는 컴파일러의 경고를 제기 할 것입니다. – DiskJunky

+0

cass의 기능이 SDK에 들어 있지 않으므로'[Obsolete]'는 실제로 isn이 아닙니다. 내가 원하는 메시지가 아냐. – MB34

+4

왜 사용해서는 안되는 클래스를 공개적으로 공개하고 있습니까? 유스 케이스를 이해하는 데 도움이 될지도 모릅니다. –

답변

0

을 클래스를 내부 클래스로 사용하고 sdk 사용자는 클래스에 액세스 할 수 없습니다. 사용자가 클래스의 메서드를 보지 않아야한다면 해당 클래스를 비공개로 표시하는 것이 좋습니다.

0

이것을 나타내는 표준 방법은 NotImplementedException을 던지는 것입니다. 불행하게도이 의미는 런타임에서만 기능이 구현되지 않음을 알 수 있습니다.

그러나 널리 사용되는 확장자 ReSharper은 컴파일시에 NotImplementedException을 던지는 메서드를 사용하면 경고합니다.


당신이 빌드/디자인 시간에 할 수있는 최선은 ObsoleteAttribute를 사용합니다. 당신은 그것을 사용자 정의 메시지를주고 표시 방법/클래스 오류의 사용을 만들 수 있습니다

[Obsolete("This method is not implemented!", true) 
public void MyFunc() 
{ 
    throw new NotImplementedException(); 
} 
이 오류 CS0619 올릴 것이다

: 클래스는 당신이를 표시 할 수 있습니다 외부 사용하도록되어 있지 않은 경우 'MyClass.MyFunc()' is obsolete: 'This method is not implemented!'

+0

필자의 글에 대한 의견에서 지적했듯이, 두 자체 SDK에서 함수 자체가 사용되지만, 하나의 SDK에서 인스턴스화 할 수없는 특정 클래스가 있습니다. 내부 액세스 수정자는 우리가 원하는대로 작동했습니다. – MB34

관련 문제