Как я могу найти все дополнительные методы в решении?

Проблема должна быть решена путем обновления до последней версии IntelliJ IDEA .

Если это по-прежнему не помогает, пожалуйста, свяжитесь со службой поддержки , приложив журналы .

9
задан Đorđe 13 May 2009 в 11:43
поделиться

5 ответов

If I were doing it I would search all files for the string "( this " -- your search string may differ based on your formatting options.

EDIT: After a little bit of experimentation, the following seems to work for me with high precision using "Find in Files" (Ctrl-Shift-F)

  • Search string: "\( this [A-Za-z]" (minus quotes, of course)
  • Match case: unchecked
  • Match whole word: unchecked
  • Use: Regular Expressions
  • Look at these file types: "*.cs"
7
ответ дан 4 December 2019 в 12:20
поделиться

Solution wide text search with a regex matching your coding style. Something like "( *this +" (added the first optional space to get some error tollerance).

1
ответ дан 4 December 2019 в 12:20
поделиться

Может быть, можно использовать код из этой статьи о , как найти методы расширения, нацеленные на объект ? Можно, например, немного переписать и использовать его для вывода всех методов расширения, а не только тех, которые нацелены на объект .

2
ответ дан 4 December 2019 в 12:20
поделиться

I'd look at the generated assemblies using reflection; iterate through the static types looking for methods with [ExtensionAttribute]...

static void ShowExtensionMethods(Assembly assembly)
{
    foreach (Type type in assembly.GetTypes())
    {
        if (type.IsClass && !type.IsGenericTypeDefinition
            && type.BaseType == typeof(object)
            && type.GetConstructors().Length == 0)
        {
            foreach (MethodInfo method in type.GetMethods(
                BindingFlags.Static |
                BindingFlags.Public | BindingFlags.NonPublic))
            {
                ParameterInfo[] args;

                if ((args = method.GetParameters()).Length > 0 &&
                    HasAttribute(method,
                      "System.Runtime.CompilerServices.ExtensionAttribute"))
                {
                    Console.WriteLine(type.FullName + "." + method.Name);
                    Console.WriteLine("\tthis " + args[0].ParameterType.Name
                        + " " + args[0].Name);
                    for (int i = 1; i < args.Length; i++)
                    {
                        Console.WriteLine("\t" + args[i].ParameterType.Name
                            + " " + args[i].Name);
                    }
                }
            }
        }
    }
}
static bool HasAttribute(MethodInfo method, string fullName)
{
    foreach(Attribute attrib in method.GetCustomAttributes(false))
    {
        if (attrib.GetType().FullName == fullName) return true;
    }
    return false;
}
6
ответ дан 4 December 2019 в 12:20
поделиться

Вы просто хотите проверить исходный код (просто найдите (это ... в файлах) или вашу запущенную программу путем отражения (в данном случае это это обсуждение может вам помочь)?

1
ответ дан 4 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: