2010-08-02 3 views
13

개체가 인스턴스화되면 기본 인터페이스가 변경되지 않도록 여러 생성자가있는 클래스를 정의했습니다. 비주얼에 (I 개체를 인스턴스화 갈 때Visual Studio의 IntelliSense에 나열된 생성자 순서를 변경하는 방법이 있습니까?

var obj = new MyClass(

Dim obj As New MyClass(

는 현재 생성자가 나열되지 : 생성자 중 하나를 싶습니다 나는 사용자 유형은 Visual Studio에서 다음과 같은 경우에 대해 "기본"생성자가 될 수 있습니다 Studio IntelliSense)를 내 수업에서 선언 한 순서대로 사용합니다. Visual Studio IntelliSense에서 인스턴스 생성 중에 메서드가 특정 순서로 나타나도록 내 생성자를 마크 업하는 방법이 있습니까?

답변

13

Visual Studio의 Intellisense에서 순서를 제어하는 ​​방법이 없습니다. 여러 생성자 (또는 메서드)를 사용하는 경우 인텔리 센스 측면에서 유일한 실제 컨트롤은 을 적절한 EditorBrowsableState과 함께 사용하는 것입니다. 이렇게하면 intellisense에서 컨스트럭터 (또는 메소드)를 숨기거나 "고급"모드로만 표시 할 수 있지만 다시 정렬 할 수는 없습니다.

그러나이 경우 .NET 4를 대상으로하는 경우 단일 생성자를 사용하고 named and optional arguments을 사용하는 것이 좋습니다.

+2

명명 된 인수와 선택적 인수를 사용하는 것이 좋습니다. 그렇기 때문에 생성자의 수를 4 개에서 2 개로 줄일 수있었습니다. –

2

나는 당신이 요구하는 것이 불가능하다고 확신합니다. 가장 좋은 방법은 생성자를 XML comments으로 마크 업하여 VS에서 인텔리 센스를 채우는 데 사용됩니다. 그러면 사용자에게 기본 생성자에 대한 자세한 인텔리 센스가 제공됩니다.

편집 : VB.NET은 생성자를 클래스 선언에서 현재 순서대로 정렬합니다.

Intellisense는 언어의 기능이 아니라 편집기의 기능이라는 것을 명심해야합니다. 다른 편집기를 사용하여 코드를 작성하기 때문에 언어에 내장 된 IDE와 관련된 기능을 사용할 수 없습니다. 코드를 작성하기위한 코드를 작성하는 것이 좋습니다.

4

흥미로운 질문이지만, 그런 능력에 대해 들어 보지 못했습니다. 하나의 옵션은 다른 생성자를 고급 또는 숨김으로 표시하는 것입니다.

ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Advanced) ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never )

+0

좋은 제안이지만, 어떤 이유로 생성자에서 작동하지 않는 것 같습니다. – Boinst

0

당신은 항상 공장 모델을 사용하고 각 방법에 대한 보호 생성자를 만들 수 있습니다. 그러나 나는 Reed Copsey answer을 추천한다. 그러나 .NET 4.0이 선택 사항이 아니면 대안이 될 수 있습니다.

관련 문제