微信小游戏开发的市场前景与创新策略探讨
628
2022-10-19
BSF.Aop- 静态 Aop 织入框架
.Net 免费开源,静态 Aop 织入(直接修改 IL 中间语言)框架,类似 PostSharp (收费); 实现前后 Aop 切面和INotifyPropertyChanged 注入方式。
描述:
项目结构扩展自 BSF 基础架构,但 dll 方面并不依赖 BSF.dll,可以独立开发使用。 项目代码量少(也就几个类文件),核心功能插件化开发,便于第三方扩展,阅读,调试,一起来完善。 - 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 车江毅
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~