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

  • 相关阅读:
    Oracle第一课
    Web前端试题
    E
    Kingdom of Black and White
    D. Let's Go Hiking
    2021牛客寒假 第一场
    Codeforces Round #691 (Div. 2)
    CF1461D
    CF1461B
    浙财16th校赛 F因子
  • 原文地址:https://www.cnblogs.com/idior/p/134257.html
Copyright © 2020-2023  润新知