G# 微软的AOP?

G#是一种基于.Net平台的一门新的语言, 它可以在编译期以及运行期为原有的代码注入新的代码. 并且新的代码同样能保证.net平台下的类型安全性.

和CodeSmith不同的是 它的代码生成技术是为已有的代码添加新的功能, 也就是目前AOP技术所要实现的目标.

如果你使用过Aspectj就会发现它语法的丑陋, 而G#的语法是C#2.0的一个子集,看上去非常的容易理解.并且G#是基于.Net的IL语言的,所以无论是C#还是VB.Net都可以发挥它的威力.

来看一个小例子,你就会发现G#的优美之处.

public class Client
{
 public Client()
 {
  Messenger(“Hello World”); 
 }
 private void Messenger(string message)
 {
  Console.WriteLine(message);
 }
}

public generator Rename
{
 static generation ChangeIt  : target Client.Messenger(string message)
 {
  pre
  {
   string oldMessage = message;

   message = “Hello G#”;
  }
  post
  {
   message = oldMessage;
  }
 }
}

再看看利用G#注入后的新的代码:

private void Messenger(string message)
{
 // From ChangeIt pre block.
 string oldMessage = message;

 // From ChangeIt pre block.
 message = “Hello G#”;

 // From the Messenger method body.
 Console.WriteLine(message);

 // From ChangIt post block.
 message = oldMessage;
}

有关G#的具体信息请访问这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值