当前位置: 首页 > 软件库 > 开发工具 > .NET开发工具 >

BSF.Aop

静态 Aop 织入框架
授权协议 Apache
开发语言 C#
所属分类 开发工具、 .NET开发工具
软件类型 开源软件
地区 国产
投 递 者 弓晔
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

.Net 免费开源,静态 Aop 织入(直接修改 IL 中间语言)框架,类似 PostSharp (收费); 实现前后 Aop 切面和 INotifyPropertyChanged 注入方式。

描述:

  • 项目结构扩展自 BSF 基础架构,但 dll 方面并不依赖 BSF.dll,可以独立开发使用。

  • 项目代码量少(也就几个类文件),核心功能插件化开发,便于第三方扩展,阅读,调试,一起来完善。

  •  .net Aop 静态织入相关的免费开源项目比较少或暂未听闻,故希望开源这块内容,成为同类型开源项目的起点和借鉴。

示例代码:

1) 前后 Aop 切面示例 (详细参考 BSF.Aop.Test 项目)

public class AroundAopTest
    {
        [MyAroundAop]
        [AttributeInfo(Des = "测试2")]
        public void Method(TempInfo info, out int b,int a=1)
        {
            a = 222;
            b = 3;
            System.Console.WriteLine("Hello world!"+a);
        }
    }
    public static class AroundAopTest2
    {
        [MyAroundAop][AttributeInfo(Des ="测试")]
        public static void Method2(TempInfo info, int a = 1)
        {
            a = 222;
            System.Console.WriteLine("Hello world!" + a);
        }
    }
    public class MyAroundAop : Aop.Attributes.Around.AroundAopAttribute
    {
        public MyAroundAop()
        {
        }
        public override void Before(AroundInfo info)
        {
            var att = info.Method.CustomAttributes.ToList()[0];
            info.Params["a"] = 55;
            System.Console.WriteLine("before" + info.Params["a"]);
        }
        public override void After(AroundInfo info)
        {
            System.Console.WriteLine("after"+ info.Params["a"]);
        }
    }
    public class TempInfo
    {
        public int T1 { get; set; }
    }
    public class AttributeInfo : System.Attribute
    {
        public string Des { get; set; }
    }

2) INotifyPropertyChanged 示例(暂未测试真正使用效果,详细参考 BSF.Aop.Test 项目 )

 [NotifyPropertyChangedAop]

public class User
    {
        public string Name { get; set; }
        public int Age { get; set; }
        [NoAop]
        public int B { get; set; }
    }

by 车江毅

 相关资料
  • 我正在将WebLogic Server 11g(10.3.6.0)升级到12c(12.2.1.3.0)。 我在12c服务器上没有问题地安装了war文件。然后,我尝试启动模块。由于缺少特定的类文件,我得到了错误。似乎该类文件属于“spring-aop-2.5.2.jar.” 当我在WebLogic Server 11g环境中部署相同的war文件时,我没有发现任何问题。我确保war文件中存在“spri

  • 我不得不承认,随着iOS8的发布,我对iOS中的动态和静态框架有点困惑。 我正在寻找一种方法来分发我创建的库,我需要支持iOS7和更高版本。(注意:这将是一个专有的框架。我不能使用可可荚,我也不能分发源代码)。下面是我已经知道的: iOS 8为iOS引入了“嵌入式框架”,但据我所知,它们不适用于iOS 7,仅适用于iOS 8及以上版本。 我可以选择将我的库作为静态库(.a文件)分发,还可以分发头。

  • 在 JDK 1.5 之后增加了一种静态导入的语法,用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。如果一个类中的方法全部是使用 static 声明的静态方法,则在导入时就可以直接使用 import static 的方式导入。 静态导入使用 import static 语句,静态导入也有两种语法,分别用于导入指定类的单个静态成员变量、方法和全部静态成员变量、方法,其中导入指定类的单

  • 本文向大家介绍实例详解BootStrap的动态模态框及静态模态框,包括了实例详解BootStrap的动态模态框及静态模态框的使用技巧和注意事项,需要的朋友参考一下 1.要用bootStrap这个框架就必须要重载它的class类,也就是说class要一样 代码如下: 有疑问的可以在下面留言,欢迎大家一起交流 1.1动态模态框 1.2静态模态框 总结 以上所述是小编给大家介绍的BootStrap的动态

  • Play框架的主要功能是提供动态响应的内容。但一个网络项目中必然有大量的静态内容,比如图片、Javascript文件、CSS文件等。我下面介绍如何在Play项目中加入静态文件。 默认路径 Play项目的静态文件一般存储在根目录下的public文件夹。新建Play项目时,routes文件会有下面的默认记录: # Map static resources from the /public folder

  • 问题内容: 静态导入是什么意思,例如: 如何定义这样的软件包?使用静态导入有什么优势? 问题答案: 表示您可以引用静态值而无需使用类名。 例如,考虑以下三个类: