[思考]怎麼在C#中加入新功能

來源:互聯網
上載者:User

怎麼在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)呢?

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.