2

我正在编写一个 Fody Addin,我能够注入我的代码并向用户提供错误消息。我能够确定指令的序列点,但我找不到找到 CustomAttributes 的序列点的方法。

我需要获取此信息以向调试器提供在何处查找错误位置的提示,以防错误应用了某个属性。

所以基本上我有这样的事情:

[MyAttribute]
public void Test()
{

}

现在我想获取 MyAttribute 属性的 SequencePoint。

**编辑:**当我投票失败时(没有任何信息为什么)这里有一些额外的信息。我可以像这样访问指令的序列点:

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?
}
4

1 回答 1

3

这是不可能的。属性没有序列点。我建议您只使用该方法的第一个序列点

于 2015-02-28T09:56:54.643 回答