社区
C#
帖子详情
问个关于代码织入的问题
hanlixuan
2010-10-16 11:01:10
我现在有个问题
有一个类o,
class o {
public void f(){
int x=0;
//我想在编译的时候,在这里自动增加上一些语句或是方法调用,(也就是说,在程序运行的时候,动态的织入一些代码)
}
}
我在网上看了关于aop方面的东西,但我觉得太墨迹了,你们有什么好的方法来实现我想要的效果吗
谢谢大家了,我想做一个orm框架,但是延时加载这里累死我了,所以我想问问大家有没有好的方法
...全文
174
15
打赏
收藏
问个关于代码织入的问题
我现在有个问题 有一个类o, class o { public void f(){ int x=0; //我想在编译的时候,在这里自动增加上一些语句或是方法调用,(也就是说,在程序运行的时候,动态的织入一些代码) } } 我在网上看了关于aop方面的东西,但我觉得太墨迹了,你们有什么好的方法来实现我想要的效果吗 谢谢大家了,我想做一个orm框架,但是延时加载这里累死我了,所以我想问问大家有没有好的方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hshxf
2010-10-18
打赏
举报
回复
[Quote=引用 13 楼 wanghui0380 的回复:]
像lz所谓的java的aop完全基于动态代理上,而net,java的动态代理一直就是短板,别看lz所谓java啥aop成熟,嘿嘿,谁用谁知道---动态代理不墨迹,谁墨迹?
[/Quote]
工具仅仅是工具而已,必然有它适合的情况和不适合的情况,没有放之四海皆适用的解决方案,怎么用还要看设计者,你非要使用它的短板那也是没有办法,依照你的理论,mysql根本就不能用,因为myisam根本就不支持事务还是表级锁,但是各大网站都在用,而且设计良好者,既能保证事务安全又并发效率高。所以不要去讨论框架工具是否墨迹,是要看你的需求是否需要你墨迹和你的设计是否墨迹。
wanghui0380
2010-10-18
打赏
举报
回复
[Quote=引用楼主 hanlixuan 的回复:]
我现在有个问题
有一个类o,
class o {
public void f(){
int x=0;
//我想在编译的时候,在这里自动增加上一些语句或是方法调用,(也就是说,在程序运行的时候,动态的织入一些代码)
}
[/Quote]
仔细看了一下楼主的需求,发现实际上你做的事情还是在编译期的事情,那么lz可能走错了方向,你不应该去看啥aop(aop实际是运行期配置,而非编译期配置),lz实际应该看的是文本模板引擎,比如T4模板引擎,vs里自己带的t4引擎,完全可以做到你要的要求
wanghui0380
2010-10-18
打赏
举报
回复
像lz所谓的java的aop完全基于动态代理上,而net,java的动态代理一直就是短板,别看lz所谓java啥aop成熟,嘿嘿,谁用谁知道---动态代理不墨迹,谁墨迹?
wanghui0380
2010-10-18
打赏
举报
回复
有关延迟加载问题请看下面两篇
http://www.cnblogs.com/anytao/archive/2009/10/29/must_net_33.html
http://www.cnblogs.com/JeffreyZhao/archive/2009/08/05/from-delegate-to-others.html
在net4里dynamic 和 Lazy<T> 完全可以做到
当然在net4以下也不是不可能完成的任务,get,set,配合事件和委托也完全是可能的方案
hanlixuan
2010-10-18
打赏
举报
回复
[Quote=引用 6 楼 sp1234 的回复:]
关于延时加载,虽然你没有说到什么有趣的问题,不过既然在csdn上很少见到有志气做自己的orm的,我还是给你一个提示。简单那来说,一个延时加载功能接口大致是是这样(我随便手写,不保证语法正确,看得懂就行了):
public IActivator
{
bool Activated{get;set;}
event Action Active;
}
然后当你的ORM从数据库中读……
[/Quote]
这个代码我大前年就能写出来,如果象你这样写,得把人累死,
aop的作用就是减少代码写入的劳动强度,我就想把get和set里面的语句给弄成aop的方式
你可愁死我了
hshxf
2010-10-17
打赏
举报
回复
这些20年、10年、5年的很“成熟”的东西,不知道oracle,sql server,java算不算成熟,算不算主流?
hshxf
2010-10-17
打赏
举报
回复
[Quote=引用 8 楼 sp1234 的回复:]
不用在java混个概念熟悉,在.net也来混点熟吧!我举一个例子:
在.net,2001年.net还没有正式发布1.0而仅仅做预演的时候好像就有remoting等等,你说它是不是给你很好地制造了“随时随地强插”(既不需要代码源作者同意就可以强行插入自己的代码)的机制?那么知道.net有remoting之类的东西吗?知道怎么在项目内强插代码吗?
问题是,这些20年、10年、5年的很“成……
[/Quote]
说你不懂你还不服,你的例子毫无可比性。aop不会破坏原有的类,原来的类还是原来的行为,只不过在你本次调用上在你的执行逻辑上改变其行为,因此不存在什么“既不需要代码源作者同意就可以强行插入自己的代码”,另外.net remoting不是作为aop工具而设计的,不要混淆概念,他的出现是为了简化rpc编程。真的建议你查查aop的资料。
以专业开发人员为伍
2010-10-16
打赏
举报
回复
不用在java混个概念熟悉,在.net也来混点熟吧!我举一个例子:
在.net,2001年.net还没有正式发布1.0而仅仅做预演的时候好像就有remoting等等,你说它是不是给你很好地制造了“随时随地强插”(既不需要代码源作者同意就可以强行插入自己的代码)的机制?那么知道.net有remoting之类的东西吗?知道怎么在项目内强插代码吗?
问题是,这些20年、10年、5年的很“成熟”的东西,不是产品主流(我不是说remoting不主流,而是用remoting仅仅为了当作aop时才不是)。
以专业开发人员为伍
2010-10-16
打赏
举报
回复
[Quote=引用 5 楼 hshxf 的回复:]
引用 2 楼 sp1234 的回复:
aop本来就是磨叽,因为它硬要搞个“万能”方法。
如果你自己的系统,你可以高效率地定一个了 public event ..... 就OK了!只不过这是你定义个一个事件,而不是像aop那样偏要发明个不分公母都随地硬插的机制出来。
不懂就不要装好不好,免得误导别人,aop在java领域已经很成熟了,有很成熟的解决方案和成功的案例,怎么就成了磨……
[/Quote]
混个脸熟也算成熟?
以专业开发人员为伍
2010-10-16
打赏
举报
回复
关于延时加载,虽然你没有说到什么有趣的问题,不过既然在csdn上很少见到有志气做自己的orm的,我还是给你一个提示。简单那来说,一个延时加载功能接口大致是是这样(我随便手写,不保证语法正确,看得懂就行了):
public IActivator
{
bool Activated{get;set;}
event Action Active;
}
然后当你的ORM从数据库中读取数据并创建一个实体实例时,判断此对象是否具有此接口。例如:
if(obj is IActivator)
{
obj.Activated=false;
obj.Active += ()=>
{
obj.Activated=true;
取并设置所有引用自定义class的属性(obj);
};
}
else
{
读取并设置所有引用自定义class的属性(obj);
}
这样,假设我们有“研究项目”对象实例,它有几十个引用其它自定义class的属性我们想延迟加载,那么大致可以这样定义:
public class 研究项目: IActivator
{
public event Action Active;
public bool Activated{get;set;}
private 管理人员 _pm;
public 管理人员 产品负责人
{
get
{
if(!Activated)
Active();
return _pm;
}
set
{
_pm=value;
}
}
.......
hshxf
2010-10-16
打赏
举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
aop本来就是磨叽,因为它硬要搞个“万能”方法。
如果你自己的系统,你可以高效率地定一个了 public event ..... 就OK了!只不过这是你定义个一个事件,而不是像aop那样偏要发明个不分公母都随地硬插的机制出来。
[/Quote]
不懂就不要装好不好,免得误导别人,aop在java领域已经很成熟了,有很成熟的解决方案和成功的案例,怎么就成了磨叽了?
wuyq11
2010-10-16
打赏
举报
回复
CSharpCodeProvider
http://topic.csdn.net/u/20100903/15/bdb0da13-426b-456a-b6ed-15c22dc69c8d.html
以专业开发人员为伍
2010-10-16
打赏
举报
回复
呵呵,lz看书走火入魔到什么程度啊?连最基本的事件都不知道了!
以专业开发人员为伍
2010-10-16
打赏
举报
回复
aop本来就是磨叽,因为它硬要搞个“万能”方法。
如果你自己的系统,你可以高效率地定一个了 public event ..... 就OK了!只不过这是你定义个一个事件,而不是像aop那样偏要发明个不分公母都随地硬插的机制出来。
hanlixuan
2010-10-16
打赏
举报
回复
哪位帮我看一下行吗
SAP ABAP调试器高级技术
代码
下载地址: https://pan.quark.cn/s/ee8627e4e6d7 ABAP调试器是一种功能强大的工具,可用于在执行期间对ABAP
代码
进行检验。除了常规的核心功能(例如逐行运行
代码
以及检验变量、字段符号和引用的值)之外,它还提供了一些辅助性的特性,能够简化并压缩调试会话的时长。并非所有使用者都熟悉这些辅助特性。SAP ABAP调试器是处理和优化ABAP
代码
开发与维护工作的核心资源,它配备了多样的功能来协助开发人员在运行状态下进行检验和排除故障。此资源着重阐述了ABAP调试器的一些高级特性,涵盖了深入分析调用堆栈、系统级调试、更新会话调试以及提升调试效率的方法。 1. **深入分析调用堆栈**:除了常规的应用程序调试,开发人员有时需要对调用堆栈的内部层级进行深入调试,特别是在错误出现在异步执行的更新处理或系统级程序时。通过启用**系统级调试**,可以访问通常不公开的系统
代码
,但这也会导致调用堆栈的显著增加,因此需要审慎操作。 2. **系统级调试**:对于不含业务逻辑的系统级程序,开发人员通常无需进行调试。然而,在特定情形下,例如进行错误追踪时,可能需要进入系统
代码
。借助调试器的“系统调试启用/禁用”选项,可以赋予对系统程序的调试权限。 3. **更新会话调试**:在处理异步更新任务,例如持久化业务数据时,错误可能发生在更新任务内部。激活**更新会话调试**,在更新任务完成后,调试器将自动启动,展示执行路径。比如,在变更成本中心后,通过输入调试指令 "/h" 启动调试,保存后能够看到更新过程中的错误。 4. **分析调用堆栈**:在进行深入调试时,调用堆栈是至关重要的。通过分析调用堆栈,能够定位到引发
问题
的具体位置,如在VB_V2_NORMAL...
【创新未发表】基于自适应无迹卡尔曼滤波的三相配电网动态状态估计研究(Matlab
代码
实现)
内容概要:本文围绕“基于自适应无迹卡尔曼滤波的三相配电网动态状态估计研究”展开,提出一种适用于三相不平衡配电网的动态状态估计算法。该方法结合自适应无迹卡尔曼滤波(AUKF)技术,有效处理配电网中存在的非线性、不确定性及量测噪声等
问题
,提升了状态估计的精度与鲁棒性。研究在Matlab平台上完成算法实现与仿真验证,涵盖系统建模、滤波算法设计、自适应噪声协方差调整机制等关键环节,适用于高比例分布式能源接入导致状态波动剧烈的实际配电网场景。; 适合人群:具备电力系统分析基础,熟悉状态估计与现代滤波理论,从事电力系统自动化、智能配电网相关研究的研究生、科研人员及工程技术人员(工作年限1-5年); 使用场景及目标:① 掌握AUKF在电力系统动态状态估计中的应用方法;② 学习如何在Matlab中构建三相配电网状态估计模型并实现滤波算法;③ 解决实际配电网中因量测稀疏、噪声时变导致的传统估计方法失效
问题
; 阅读建议:建议读者结合电力系统状态估计基础知识,重点研读算法设计与参数整定部分,并动手复现仿真
代码
,通过对比UKF、EKF等传统方法加深对AUKF优势的理解。
【硕士论文完美复现】【价格型需求响应】基于需求侧响应的配电网供电能力综合评估(Python
代码
实现)
内容概要:本文档为一项关于“价格型需求响应”背景下配电网供电能力综合评估的硕士论文复现资源,采用Python语言实现核心算法与模型。内容系统涵盖了需求侧响应机制建模、基于电价引导的负荷调整策略、配电网供电能力的量化评估方法,并通过编程仿真对实际配电系统进行分析,重点复现了原论文中的数学模型、优化求解流程及关键结果,旨在提升配电网运行效率与供电可靠性,同时为相关研究提供可复用的
代码
基础。; 适合人群:具备一定电力系统基础知识和Python编程能力的研究生、科研人员及从事智能电网、需求响应、配电网规划等相关工作的技术人员。; 使用场景及目标:①复现并深入理解硕士论文中关于价格型需求响应与供电能力评估的理论模型与实现方法;②应用于学术研究、课程设计或科研项目,开展需求响应策略仿真与配电网承载力分析;③作为科研参考,支撑高水平论文撰写、课题申报及算法二次开发。; 阅读建议:建议结合文档中的
代码
逐行调试,深入理解优化模型的构建逻辑与求解过程,同时可对比相关Matlab版本实现,以全面掌握不同编程环境下算法实现的异同,进而深化对技术细节与工程应用的理解。
chat_21718575177067961723981951598025.pdf
chat_21718575177067961723981951598025.pdf
科技中介服务机构如何依托科创数智大脑提升服务精准度与客户粘性?.docx
科技中介服务机构如何依托科创数智大脑提升服务精准度与客户粘性?
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章