2015-02-09 6 views
2

Я пишу Fody Addin, и я могу ввести свой код и предоставить сообщения об ошибках пользователю. Я могу определить точки последовательности инструкций, но я не могу найти способ найти точки последовательности CustomAttributes.Получить SequencePoint для CustomAttribute в Fody/Mono.Cecil

Мне нужно получить эту информацию, чтобы предоставить отладчику подсказку, где найти местоположение ошибки, в случае, если атрибут был применен неправильно.

Так в основном у меня есть что-то вроде этого:

[MyAttribute] 
public void Test() 
{ 

} 

Теперь я хочу, чтобы получить SequencePoint от MyAttribute атрибута.

** Редактировать: ** Как я уже проголосовал (без какой-либо информации, почему) здесь есть дополнительная информация. Я могу получить доступ к точке последовательности инструкций, как это:

public static SequencePoint GetSP(MethodDefinition method) 
{ 
    return method.Body.Instructions 
     .Where(instruction => instruction.SequencePoint != null) 
     .Select(instruction => instruction.SequencePoint) 
     .FirstOrDefault(); 
} 

Это прекрасно работает для получения инструкций, но когда я доступ к атрибуту, я не знаю, как получить точку последовательности:

public static SequencePoint GetSP(MethodDefinition method) 
{ 
    var attribute = method.CustomAttributes.First(); 
    // what to enter here to get SequencePoint of attribute? 
} 

ответ

3

это не возможное. атрибуты не имеют точек последовательности. я предлагаю вам просто использовать первую последовательность для метода вместо