Omar Al Zabir正在寻找"一种更简单的AOP风格编码方式".
他创建了一个名为AspectF的框架,这是一种"将Aspects添加到代码中的流畅而简单的方法".
它不是真正的AOP,因为它不进行任何编译时或运行时编织,但它是否实现了与AOP相同的目标?
以下是AspectF用法的示例:
public void InsertCustomerTheEasyWay(string firstName, string lastName, int age,
Dictionary<string, string> attributes)
{
AspectF.Define
.Log(Logger.Writer, "Inserting customer the easy way")
.HowLong(Logger.Writer, "Starting customer insert", "Inserted customer in {1} seconds")
.Retry()
.Do(() =>
{
CustomerData data = new CustomerData();
data.Insert(firstName, lastName, age, attributes);
});
}
Run Code Online (Sandbox Code Playgroud)
以下是作者的一些帖子,进一步阐明了AspectF的目标:
根据作者的说法,我认为AspectF的设计不是AOP的替代品,而是一种实现"分离关注并保持代码良好和干净"的方法.
一些想法/问题:
在Windows 7上测试F#3.1
fsi.PrintLength < - 5000 ;;
[1..5000] ;;
由于StackOverflowException,进程终止.检测到会话终止.按Enter重新启动.
在Mono(F#4.0)上,似乎没有这样的限制.