1

我正在尝试CompileTimeValidate(MethodBase method)为 postsharp 写一个。问题是当发生违规时,它只在错误列表中显示描述。“文件”和“行”列是空的。

我可以使用的唯一信息MethodBase是应用属性的方法的实例。

有没有办法从MethodBase对象中获取源文件和行号详细信息?

    public override bool CompileTimeValidate(MethodBase method)
    {
        MessageSource.MessageSink.Write(new Message(SeverityType.Error, "CU0001",
           "MyError", "MyAspectLibrary"));

        return false;
    }
4

1 回答 1

3

不,那里没有。MethodBase 是 .Net 程序集底层元数据的一部分的表示。包括文件和行信息在内的源信息不存储在 DLL 中,因此无法通过反射 API 获得。文件和行信息实际上存储在 PDB 中,您需要通过那些匹配令牌的 API 来查找文件/行信息。

于 2009-07-30T16:54:49.260 回答