Можно ли показать все методы и их модификаторы доступа? - PullRequest
3 голосов
/ 10 февраля 2009

Я делаю обзор кода в некоторых больших библиотеках классов, и мне было интересно, если кто-нибудь знает простой и легкий способ создания списка всех методов (и, возможно, свойств / переменных тоже) и их модификаторов доступа. Например, я хотел бы что-то вроде этого:

private MyClass.Method1()
internal MyClass.Method2()
public MyOtherClass.Method1()

Что-то вроде заголовочного файла C ++, но для C #. Это позволило бы быстро собрать все в одном месте, и тогда мы сможем выяснить, действительно ли некоторые методы должны быть помечены как внутренние / публичные.

Ответы [ 6 ]

10 голосов
/ 10 февраля 2009

Да, используйте отражение:

foreach (Type type in assembly.GetTypes())
{
    foreach (MethodInfo method in type.GetMethods(BindingFlags.Public |
        BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance))
    {
        Console.WriteLine("{0} {1}{2}.{3}", GetFriendlyAccess(method),
            method.IsStatic ? "static " : "", type.Name, method.Name);
    }
}

Я оставлю GetFriendlyAccessName в качестве упражнения для читателя - используйте IsFamily, IsPrivate, IsPublic, IsProtected и т. Д. - или свойство Attributes.

1 голос
/ 10 февраля 2009

Вы можете использовать инструменты, такие как Отражатель

1 голос
/ 10 февраля 2009

Exuberant ctags имеет режим для C # и прост в использовании. Тем не менее, я бы просто отразить сборку.

1 голос
/ 10 февраля 2009

Что ж, вы можете использовать рефлексию для перечисления методов.

0 голосов
/ 10 февраля 2009

Если вы используете Visual Studio, то вы всегда можете получить это представление.

Просто используйте параметр «Перейти к определению», и Visual Studio откроет метаданные типа в новой вкладке (если вы используете DLL, а не исходный код напрямую).

0 голосов
/ 10 февраля 2009

.Net Отражатель или ildasm.

ildasm сгенерирует хороший файл для вас, если вы попросите его экспортировать, но запросите только тех членов, которые вам нужны.

NDepends также сделает это (и с большей гибкостью), но для коммерческого использования стоит денег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...