zoukankan      html  css  js  c++  java
  • 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#的具体信息请访问这里

  • 相关阅读:
    isinstance函数
    Django之ORM那些相关操作
    Django ~ 2
    Django ~ 1
    Django详解之models操作
    Django模板语言相关内容
    livevent的几个问题
    客户端,服务器发包走向
    关闭客户端连接的两种情况
    std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
  • 原文地址:https://www.cnblogs.com/idior/p/134257.html
Copyright © 2011-2022 走看看