- 授权协议: Apache
- 开发语言: C#
- 操作系统: 跨平台
- 软件首页: https://git.oschina.net/chejiangyi/BSF.Aop
- 软件文档: https://git.oschina.net/chejiangyi/BSF.Aop/blob/master/README.md?dir=0&filepath=README.md&oid=cbb9fa0d16fd429190a834026f14b2a9016db514&sha=91ac50e53093d5ef6e2241ae0e88191f79053a62
软件介绍
.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 车江毅
算法详解(卷1)——算法基础
[美]蒂姆·拉夫加登(Tim Roughgarden) / 徐波 / 人民邮电出版社 / 2019-1-1 / 49
算法是计算机科学领域最重要的基石之一。算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。 算法详解系列图书共有4卷,本书是第1卷——算法基础。本书共有6章,主要介绍了4个主题,它们分别是渐进性分析和大O表示法、分治算法和主方法、随机化算法以及排序和选择。附录A和附录B简单介绍了数据归纳法和离散概率的相关知识。本书的每一章均有小测验、章末习题和编程题,这为读者的自我检查以及进一步学习提......一起来看看 《算法详解(卷1)——算法基础》 这本书的介绍吧!
