享受代码,享受人生

SOA is an integration solution. SOA is message oriented first.
The Key character of SOA is loosely coupled. SOA is enriched
by creating composite apps.
posts - 213, comments - 2315, trackbacks - 162, articles - 45
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

G# 微软的AOP?

Posted on 2005-04-08 17:15  idior  阅读(...)  评论(... 编辑 收藏

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#的具体信息请访问这里