在Fody / Mono.Cecil中获取CustomAttribute的SequencePoint

时间:2015-02-09 19:24:39

标签: c# .net pdb mono.cecil fody

我正在写一个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?
}

1 个答案:

答案 0 :(得分:3)

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