2015-12-08 1 views
0

У меня слишком много перегрузок методов для каждого метода, и я думаю, как сделать MyClass более понятным и доступным для других разработчиков. Мои идеи:Как скрыть перегрузки методов из intellisense и файла основного кода класса, когда проект является частью решения VS2013?

1.

сделать частичный класс и новый MyClassOldMethods.cs имени файла со всеми методами отмечены

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] 

это не работают, потому что проект является частью решения.

2.

Сделать старый метод перегрузки, как метод расширения в другой файл в новом статическом классе. Но я не могу скрыть их от intellisense или я могу?

Существует много существующего кода, поэтому решение должно быть обратно совместимым. У меня такое чувство, что это неправильно на первом месте, но можно ли это сделать?

Редактировать: SO хочет, чтобы я объяснил, что How to hide public methods from intellisense не является дубликатом. он не отвечает на вопрос. Я прочитал его перед публикацией. В ответах четко указано, что EditorBrowsableState не скрывает ничего в одном решении и не имеет ничего общего с разделением устаревших, но где-то используемых перегрузок. Я хочу знать, неправильно ли переместить экземпляры mthods в методы расширения.

+1

Возможный дубликат [Как скрыть общедоступные методы из intellisense] (http://stackoverflow.com/questions/9086136/how-to-hide-public-methods-from-intellisense) – stuartd

+1

Ваши методы расширения будут скрыты от intllisense, если вы поместите их в отдельное пространство имен. Если вам нужен метод расширения, вы всегда можете добавить 'using some.namespace.with.extensions', и он будет доступен снова. –

+0

@stuartd: не дублируется. он не отвечает на вопрос. Я прочитал его перед публикацией. В ответах четко указано, что EditorBrowsableState не скрывает ничего в одном решении и не имеет ничего общего с разделением устаревших, но используемых перегрузок. –

ответ

0

Методы расширения будут скрыты от Intellisense, если они находятся в отдельном пространстве имен, которое определено среди используемых пространств имен. Если вам нужен метод расширения, вы всегда можете добавить using some.namespace.with.extensions, и он будет доступен снова. Этот подход следует использовать разумно, и методы расширения следует использовать там, где они уместны. ReSharper не использует это правило и показывает все возможные методы расширения из ссылочных библиотек.

Если класс реализует множество интерфейсов, и нет никакой необходимости, чтобы показать все реализованные методы, вы можете использовать явное выполнение, например:

public class SomeClass : SomeInterface 
{ 
    void SomeInterface.SomeInterfaceMethod() 
    { 
     // ... some code ... 
    } 
} 

При проверке всех методов класса, SomeInterfaceMethod не будет пока класс не будет переведен в тип SomeInterface.

Смежные вопросы