zoukankan      html  css  js  c++  java
  • [思考]怎么在C#中加入新功能

    怎么在C#中加入功能(语法,关键词)?

    本文说的不是自定义类,函数之类的,指的是修改,增加C#的语法。

    重新开发一门新的语言,工作量太大,很难做到科学实用,而是也难以跟上C#的更新进度,所以选择扩充C#的方法,以满足专业领域的应用。

    情景一:定义一个交换运算符 <=> 实现函数 swap(a,b)的功能。上代码

    int a = 3;

    int b = 5;

    a <=> b;

    之后a,b值互换(前提是a,b两个变量是兼容类型)

    情景二:定义with关键词

    string[] fileNames;
    with(new OpenFileDialog())
    {
        .Filter = "*.txt|*.txt";
        .Multiselect = true;
        if (.ShowDialog() == DialogResult.OK)
         {
             fileNames = .FileNames;
         }
     }

     //Do(fileNames);

    上面两个例子可以显著减少临时变量的使用数量。

    思路:把增加(修改)的语法,关键词翻译成标准的C#代码,然后交给visual studio去编译处理。

    问题:

    1. 怎么在vs代码编辑器中集成这些变化的功能,例如代码智能提示,语法动态检查,代码着色。

    2. 把扩充的关键词和语法翻译成底部标准语法,利用什么接口?例如翻译后的代码保存在哪里?怎么让vs自动编译翻译后的代码,怎么处理以前和翻译后的代码的关系?

    3. 怎么在编译器中集成这个功能?例如怎么让编译针对以前的代码,给出正确的行号,正确的语法识别?

    4. 添加的功能,怎么在别的语言中应用?怎么跟VB.net互操作?

    因为mono和monoDevelopment都是开源的,修改monoDevelopment源代码的方式实现上述功能,该做哪些工作?

    如果利用visual studio来开发,利用插件,能实现么?

    DSL (domain specific language)呢?

  • 相关阅读:
    献给 Python 开发人员的 25 个最佳 GitHub 代码库!
    6 drf-认证权限解析频率
    4: drf视图组件
    3 drf请求与响应
    十三:Django框架学习之auth模块
    十二:django中间件学习之拓展1
    git光速从入门到精通
    mac系统下的mysql安装(ver.8.0.20)
    python小练习——2048
    docker下overlay2占用空间过大,清理docker占用空间
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/2016356.html
Copyright © 2011-2022 走看看