Как скрыть общественные методы от intellisense

Я хочу скрыть общедоступные методы из списка членов intellisense. Я создал атрибут, который при применении к методу вызовет вызов метода при его создании. Я сделал это, чтобы лучше поддерживать частичные classы. Проблема в том, что в некоторых средах (например, Silverlight) reflection не может получить доступ к частным членам, даже к дочерним classам. Это проблема, поскольку вся работа выполняется в базовом classе. Я должен сделать эти методы общедоступными, но я хочу, чтобы они были скрыты от intellisense, подобно тому, как работает атрибут Obsolete . Честно говоря, потому что я анал об инкапсуляции объектов. Я пробовал разные вещи, но на самом деле ничего не получилось. Метод все еще отображается в раскрывающемся списке участников.

Как заставить публичные методы появляться в intellisense, когда я не хочу, чтобы их вызывали клиенты? Как это для реального вопроса, Филистимляне! Это также может относиться к свойствам MEF, которые должны быть общедоступными, хотя иногда вы хотите скрыть их от клиентов.

Обновление: я созрел как разработчик, так как я разместил этот вопрос. Почему я так сильно заботился о том, чтобы скрывать интерфейс, вне меня.

Расширить мой комментарий о частичных методах. Попробуйте что-то вроде этого

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 } } 

Использование атрибута EditorBrowsable например, приведет к тому, что метод не будет показан в intellisense:

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

Вы ищете EditorBrowsableAttribute

В следующем примере показано, как скрыть свойство classа из IntelliSense, установив соответствующее значение для атрибута EditorBrowsableAttribute. Сборка classа 1 в собственной сборке.

В Visual Studio создайте новое решение для Windows и добавьте ссылку на сборку, которая содержит Class1. В конструкторе Form1 объявите экземпляр classа 1, введите имя экземпляра и нажмите клавишу периода, чтобы активировать раскрывающийся список IntelliSense членов Class1. Свойство Age не отображается в раскрывающемся списке.

 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; } } } } } 
Давайте будем гением компьютера.