2010-08-02 12 views
13

He definido una clase con múltiples constructores para que las interfaces subyacentes sean inmutables una vez que se crea una instancia del objeto. Quisiera uno de los constructores de ser el constructor de "default" para cuando un usuario escribe lo siguiente en Visual Studio:¿Hay alguna manera de cambiar el orden de los constructores enumerados en IntelliSense en Visual Studio?

var obj = new MyClass(

Dim obj As New MyClass(

Actualmente, cuando voy a una instancia del objeto, los constructores no son mencionados (en Visual Studio IntelliSense) en el orden en que los declare en mi clase. ¿Hay alguna manera de marcar mis constructores para que sus métodos aparezcan en un orden particular durante la creación de instancias en Visual Studio IntelliSense?

Respuesta

13

No hay forma de controlar el orden en Intellisense de Visual Studio. Si tiene múltiples constructores (o métodos), su único control real en términos de intellisense es usar EditorBrowsable con el EditorBrowsableState apropiado. Esto le permite ocultar un contructor (o método) en intellisense, o solo lo muestra en modo "avanzado", pero no le permite reordenarlo.

Sin embargo, en esta situación, si está apuntando a .NET 4, recomendaría considerar el uso de un solo constructor y aprovechar el named and optional arguments.

+2

gran sugerencia sobre el uso de argumentos nombrados y opcionales. Debido a eso, pude reducir el número de constructores de 4 a 2. –

2

Estoy bastante seguro de que lo que estás pidiendo es imposible. Lo mejor que puede hacer es marcar sus constructores con XML comments que se utilizarán para poblar el intellisense en VS. Eso le dará al usuario información detallada sobre qué constructores está predeterminado, etc.

Editorial: Estoy seguro de que VB.NET ordena a los constructores en el orden de su presente en la declaración de clase.

Debe recordar que Intellisense no es una característica del lenguaje, sino del editor. No tendría características específicas del IDE integradas en el lenguaje porque otros editores pueden usarse para escribir código. Escribir código con el propósito de escribir código está fuera de lugar.

4

Esa es una pregunta interesante, pero no he oído hablar de tal capacidad. Una opción sería marcar los otros constructores como avanzados u ocultos.

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

+0

Una gran sugerencia, pero esto no parece funcionar en los constructores por alguna razón. – Boinst

0

Siempre se puede utilizar un modelo de fábrica y hacer que el constructor protegido para cada método. Sin embargo, permito Reed Copsey answer. Sin embargo, si .NET 4.0 no es una opción, esta podría ser una alternativa.

Cuestiones relacionadas