Я хочу проанализировать файл C#. Единственное, что я хочу, это определить, содержит ли оно свойство с определенным именем; просто простой истинный/ложный ответ. Вернее, так как я проверка более одного свойства в каждом цикле, извлекая список имен свойств может быть полезнымИзвлечение имен свойств из исходного файла C#
Я думал, что я мог бы создать элегантное решение с использованием CodeDomProvider
функциональности (F # пример):
use reader = new StreamReader(existingFile)
let codeProvider = new CSharpCodeProvider()
let codeUnit = codeProvider.Parse(reader)
К сожалению, функция Parse
не применяется для CSharpCodeProvider
. Есть ли способ получить CodeCompileUnit
из исходного файла? Или есть другой элегантный способ? (Я надеялся избежать регулярных выражений по этому поводу)?
Редактировать: Я собираюсь использовать это для автоматического генерации кода. В принципе, я собираюсь создать частичный класс в файле xyz.partial.cs. Это создаст свойство скелета. Но если я хочу изменить реализацию свойства, я разрежу это свойство и вставим его в кодированный вручную xyz.cs. При воссоздании сгенерированного класса я хочу, чтобы он пропускал генерирующие свойства, которые я переместил в файл с ручной кодировкой.
Следовательно, размышления не могут быть и речи, потому что отражение скажет мне, что свойство действительно существует, но не определено, если оно определено в том или ином файле.
Тем не менее, я испытываю зуд, чтобы вскрыть Expresso и дать ему шанс. Я могу регулярно выражать что-либо, а не сила в стихе, может остановить меня. –
Считаете ли вы размышление над скомпилированной версией источника? Или это не вариант? Не уверен, что отражение отражает имена свойств. – 2010-06-10 13:54:14
@Moron - Это должно работать очень хорошо. – ChaosPandion