Где или как я могу получить полный список зарезервированных слов C / методы / пространства имен / ... для автозаполнения - PullRequest
2 голосов
/ 18 декабря 2011

Я делаю редактор автозаполнения для языка C #, и мне нужно получить все слова / методы / пространства имен / свойства в C #. Не нашел ничего полезного в гугле. Также пробовал с отражением, но не может получить все элементы, такие как пространства имен, после System или других пространств имен.

Есть ли в Интернете словарь со всем этим или есть способ сделать это с помощью отражения?

для примера: Пользователь набирает Систему.

Автозаполнение обнаружило Систему как пространство имен и показало все типы / методы и пространства имен внутри нее.

или пользователь печатает Bitmap (если я не найду Bitmap в качестве корневого типа, я попробую все комбинации с использованием XXX.YYY, например XXX.YYY.Bitmap ...)

Спасибо

P.S. Пожалуйста, не рекомендуйте мне MSDN, потому что я уже знаю об этом, и это будет последний и худший вариант, чтобы рекурсивно анализировать всю информацию на MSDN и сохранять ее в базе данных.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

Согласно комментарию @Steve Wellens, есть различия между именами типов C # и .NET. У вас есть две очень разные проблемы: -

  1. Получение знаний о C # - позволит вашему редактору узнать о ключевых словах C # и т. Д. Это можно найти в спецификации C # согласно ответу @Cody Grey. Это не зависит от контекста конкретного файла, который вы редактируете (если только вы не хотите, чтобы у вашего редактора была возможность ограничиться более старой версией C #, и в этом случае вам нужно будет опираться на знания предыдущих версий спецификации). ).

  2. Получение знаний о типах, доступных в текущем контексте редактирования. Для этого вам нужно знать, какие пространства имен были объявлены в операторах using в текущем файле и на какие библиотеки ссылался проект, содержащий текущий файл. Нет смысла пытаться найти всю эту информацию в глобальном масштабе для каждой доступной библиотеки, поскольку объем информации будет слишком велик и будет постоянно меняться. Вы могли бы, возможно, получить знания обо всех именах типов, доступных в GAC. В случае частичного typename, например, Bitmap, простая реализация будет использовать операторы using, содержащиеся в файле, чтобы попытаться определить, на какое имя типа ссылается, путем изучения соответствующих сборок, на которые ссылается проект, содержащий текущий файл (могут возникнуть конфликты, и потребуется пользователь разрешение, например, префикс частичного имени типа с некоторыми другими элементами фактического пространства имен). Вот как работает редактор Visual Studio. Более богатая реализация может проверять все сборки, на которые ссылается проект, содержащий текущий файл плюс все содержащиеся в GAC, и, при необходимости, предлагать либо добавление полного пространства имен к имени типа, либо добавление using заявление. Так работает Решарпер.

0 голосов
/ 18 декабря 2011

Пробовали ли вы документацию MSDN как для .NET Framework , так и для C # языка ?Это самый близкий к вам «каталог со всем этим в Интернете».

Вы также можете просмотреть спецификацию языка C # .

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