Получить номера строк полей без использования парсера c # - PullRequest
4 голосов
/ 14 апреля 2011

Я хотел бы получить строки # полей типа.

Чтобы получить # строки операторов в методе, достаточно просто:

Type type = typeof(MyClass);
MethodInfo methodInfo = type.GetMethod("SomeMethod");
int token = methodInfo.MetadataToken;
ISymbolReader reader = SymUtil.GetSymbolReaderForFile(@"dllName", null); // from mike stall's pdb2xml
ISymbolMethod methodSymbol = reader.GetMethod(new SymbolToken(token));
int count = methodSymbol.SequencePointCount;
ISymbolDocument[] docs = new ISymbolDocument[count];
int[] startColumn = new int[count];
int[] endColumn = new int[count];
int[] startRow = new int[count];
int[] endRow = new int[count];
method.GetSequencePoints(offsets, docs, startRow, startColumn, endRow, endColumn);

К сожалению, этого недостаточно, чтобы получить локальные переменные конструктора, так как некоторые из переменных типа могут быть const / static.

...