Я создал правило FxCop, которое проверяет использование DateTime.Now. Он работает довольно хорошо, за исключением того, что он сообщает номер ошибочной строки как начало метода, а не строку кода, которая фактически вызывает DateTime.Now. Что мне нужно сделать, чтобы получить правильный номер строки в отчете FxCop. Вот мой код:
public override void VisitMemberBinding(MemberBinding memberBinding)
{
string name = memberBinding.BoundMember.FullName;
if (name == "System.DateTime.get_Now")
{
Problems.Add(new Problem(GetResolution(), memberBinding.BoundMember.SourceContext));
}
base.VisitMemberBinding(memberBinding);
}
Я пробовал memberBinding.SourceContext и memberBinding.BoundMember.SourceContext и оба возвращают номер начальной строки метода.
Я мог бы использовать SourceContext. (Start | End) LineNumber, но какой? Кажется, я просто не использую правильный объект. SourceContext