MethodBase是否提供文件名和行号?

时间:2009-07-30 16:51:33

标签: c# .net reflection compiler-construction postsharp

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

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

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

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

        return false;
    }

1 个答案:

答案 0 :(得分:3)

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