装配时的后期

本文关键字: | 更新日期: 2023-09-27 18:04:09

我有一个postsharp属性,用于处理整个dll中的异常(该dll由其他团队提供)并管理数据库调用。所以我们的想法是用后置

处理异常

这是属性

[Serializable]
    public class MethodConnectionTracking: OnExceptionAspect
    {
        bool canceled = false;
        public override void OnException(MethodExecutionArgs args)
        {
            Exception ex = args.Exception;
            if (ex != null)
            {
               --- do things
            }
        }

    }

要使其工作并拦截该项目称为SPData的assemblyInfo.cs中的所有方法,我有:

[assembly: MethodConnectionTracking(AttributeTargetElements = MulticastTargets.Method)]

效果很好。但是我想在其他项目中指定这一行。

所以,主项目引用SPData。所以,在主项目AssemblyInfo.cs文件中,我写:

[assembly: MethodConnectionTracking(AttributeTargetAssemblies = "SPData", AttributeTargetElements = MulticastTargets.Method)]

但它不工作。

是可能做我想要的,我错过了一些参数吗?

装配时的后期

  1. 不需要AttributeTargetElements = MulticastTargets。方法,因为在使用OnExceptionAspect基类时已经提供了

  2. 你不需要检查如果ex != null,因为它永远不会是空的OnException不会被调用,除非有一个异常。见http://programmersunlimited.wordpress.com/2011/08/01/postsharp-why-are-my-arguments-null/

您确定您有正确的程序集名称吗?您正在使用名称空间吗?您需要使用实际的程序集名称(不包含.dll)。试试通配符"SPData*",看看是否有帮助。

您是否使用ILSpy逐步执行代码或查看编译后的程序集?除非您提供了错误的名称,否则它应该可以工作。是对项目还是已编译程序集的引用?程序集是否已签名或已混淆?

相关文章:
  • 没有找到相关文章