我创建了一个检查 DateTime.Now 使用的 FxCop 规则。它工作得很好,除了它将有问题的行号报告为方法的开始,而不是实际调用 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 但是哪一个?似乎我只是没有使用正确的 object.SourceContext