c# - MethodInterceptionAspect 的替代方案

标签 c# aop postsharp

我需要限制一些关于许可证的功能。所以我在 postSharp 中使用 MethodInterceptionAspect 创建了一个属性并验证了我需要的字段。 是否有任何其他第三方制作 aop 自定义属性? 我知道存在动态代理,但我也想要注释部分。

示例:

namespace ConsoleApp1
{
    [Serializable]
    public class LicenseValidator : MethodInterceptionAspect
    {
        readonly String name;

        public LicenseValidator(String name)
        {
            this.name = name;
        }

        public override void OnInvoke(MethodInterceptionArgs args)
        {
            if (name = ! "notInvoke")
            {
                args.Proceed();
            }
            else
                Console.WriteLine("Not executed !");


        }
        }
}

以及这个的用法:

[LicenseValidator("tal")]
public static Boolean PrintHi(int num)
{
    Console.WriteLine("Hi");
    return true;
}

注意:这只是一个用法示例,不是我的代码。但这是我想用来解决我的问题的方法。

还有其他方法可以用属性来实现吗?第 3 方或手动。

谢谢!

最佳答案

您可以使用其他第 3 方,例如 Spring.NET、CaSTLe Windsor、Aspect.NET 等。 或者你可以使用 Ioc Container,例如 Unity 或 StractureMap 等。

PostSharp is CompileTime and other are runTime.

也可以使用 AspectInjector 。 它非常简单,也像 postSharp 一样 CompileTime

可以看到这个link如何使用它。

希望有用

关于c# - MethodInterceptionAspect 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57943956/

相关文章:

C# 不明确的扩展方法

c# - Android 到 PC/PC 到 android 蓝牙/wifi 实时音频流

java - 如何在方法验证失败之前从 AOP 返回

c# - WPF + PostSharp’ed View 模型在一分钟内就卡住了

aop - 通过 AssemblyInfo 应用 PostSharp 方面

c# - 在另一个列表中创建一个列表引用对象

c# - 在 c# 中等效于 'Base64' 在 c 编程中生成的加密字节的编码字符串将在 URL 查询字符串中发送

dependency-injection - 使用上下文信息记录日志

entity-framework - 不使用存储库模式,按原样使用 ORM (EF)

c# - 通过层次结构的 PostSharp 和方面继承