【问题标题】:How to implement postsharp attributes as Interfaces如何将 postsharp 属性实现为接口
【发布时间】:2015-01-13 22:12:23
【问题描述】:

我有一个简单的异常处理属性。问题是我们在公共项目中使用该属性,它创建了对我们所有项目的依赖关系。我们如何从公共项目中删除 Postsharp 依赖项并使用 Autofac 注入 Postsharp。

  • 我们的目标是从根项目轻松更新 Nuget 包

【问题讨论】:

    标签: c# dependency-injection autofac postsharp aop


    【解决方案1】:

    很可能无法使用 Autofac 应用方面。

    如果您使用属性应用方面,那么您需要参考 PostSharp.dll,因为它定义了方面的基类。

    但你可以add aspects 使用项目级别的xml configuration 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <Project xmlns="http://schemas.postsharp.org/1.0/configuration"
             xmlns:m="clr-namespace:MyAspectLibrary;assembly:MyAspectLibrary">
      <Multicast>
        <m:MyAspect AttributeTargetTypes="MyProject.Class1" AttributeTargetMembers="Method1" />
      </Multicast>
    </Project>
    

    该文件必须具有相同的名称,并且必须与带有 psproj 扩展名的 csproj 文件放在同一文件夹中(此处为 MyProject.psproj)。

    在这种情况下,您可以从MyProject 中删除对 PostSharp.dll 的引用。它仍然需要从MyAspectLibrary 引用。

    编辑:请注意,MyProject 仍需由 PostSharp 进行后处理。请参阅 csproj 文件中的 PostSharp.targets 和相关行。

    【讨论】:

    • 很可能无法使用 Autofac 应用方面。 :((
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多