Cómo ocultar los métodos públicos de intellisense

Quiero ocultar los métodos públicos de la lista de miembros intellisense. Creé un atributo que cuando se aplica a un método hará que se llame al método cuando se construye su objeto. Hice esto para apoyar mejor las clases parciales. El problema es que en algunos entornos (como Silverlight), la reflexión no puede acceder a los miembros privados, incluso a los de las clases secundarias. Esto es un problema ya que todo el trabajo se hace en una clase base. Tengo que hacer estos métodos públicos, pero quiero que estén ocultos de intellisense, de forma similar a cómo funciona el atributo Obsolete . Francamente, porque soy anal sobre la encapsulación de objetos. He intentado cosas diferentes, pero nada ha funcionado realmente. El método aún aparece en el menú desplegable de miembros.

¿Cómo evito que los métodos públicos se muestren en intellisense cuando no quiero que los clientes me llamen? ¿Cómo es eso de una verdadera pregunta, filisteos? Esto también puede aplicarse a las propiedades de MEF que deben ser públicas, aunque a veces desee ocultarlas de los clientes.

Actualización: he madurado como desarrollador desde que publiqué esta pregunta. Por qué me importa tanto ocultar la interfaz me supera.

Para ampliar mi comentario sobre métodos parciales. Pruebe algo como esto

Foo.part1.cs

 partial class Foo { public Foo() { Initialize(); } partial void Initialize(); } 

Foo.part2.cs

 partial class Foo { partial void Initialize() { InitializePart1(); InitializePart2(); InitializePart3(); } private void InitializePart1() { //logic goes here } private void InitializePart2() { //logic goes here } private void InitializePart3() { //logic goes here } } 

Usar el atributo EditorBrowsable como tal hará que un método no se muestre en intellisense:

 [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public void MyMethod() { } 

Está buscando EditorBrowsableAttribute

El siguiente ejemplo muestra cómo ocultar una propiedad de una clase de IntelliSense estableciendo el valor apropiado para el atributo EditorBrowsableAttribute. Build Class1 en su propio ensamblaje.

En Visual Studio, cree una nueva solución de aplicación de Windows y agregue una referencia al ensamblaje que contiene Class1. En el constructor de Form1, declare una instancia de Class1, escriba el nombre de la instancia y presione la tecla de período para activar la lista desplegable IntelliSense de los miembros de Class1. La propiedad Age no aparece en la lista desplegable.

 using System; using System.ComponentModel; namespace EditorBrowsableDemo { public class Class1 { public Class1() { // // TODO: Add constructor logic here // } int ageval; [EditorBrowsable(EditorBrowsableState.Never)] public int Age { get { return ageval; } set { if (!ageval.Equals(value)) { ageval = value; } } } } }