2011-02-01 62 views
2

我有一個應用程序可以讓開發人員創建自己的派生子類並向其添加預定義的屬性。在Visual Studio中創建自定義屬性編輯器/生成器.Net

例如:

class MyDocContainer : GenericDocumentContainer { 

Document docA = new Document("Secret Report on Brocoli Wars"); 
Document docB = new Document("Who's afraid of Donald Duck"); 
Document docC = new Document("Out Of Money Experience"); 

//rest of code goes here 

} 

我想有一個可視化編輯器,將允許編輯/添加文件和其他預定義類型的分部類(就像設置設計器)

這將有助於對派生類進行綜合觀察並使其更易於維護。

理想情況下,我也想生成在特殊場所(如構造函數或專用init方法)

任何想法每個屬性相關的幾行代碼?

回答

0

從您試圖實現的目標(以及希望儘可能自然),我建議您使用Visual Studio加載項或VSX包,訪問DTE及其代碼模型。

這裏是你可能需要做什麼(如果您選擇外接程序路徑):

  1. 創建外接程序(從其他項目類型菜單中有一個插件選項)。
  2. 創建Windows窗體或Windows使用Control或WPF控件來容納將要使用的UI。
  3. 顯示控件或表單,以便開發人員可以完成他/她的工作。
  4. 使用FileCode model方法將代碼工件添加到解決方案。

一些你需要知道的事情:

  1. 您需要DTE/DTE2情況下,外接程序已經有了它們,但你可能需要將它們傳遞到用戶界面的情況下,你會從那裏改變代碼。
  2. DTE具有Solution屬性,它表示當前加載的解決方案。您可能想要迭代其項目/項目。
  3. 每個項目都有項目項目(實際的代碼文件)。
  4. 某些ProjectItem具有FileCodeModel。

擁有FileCodeModel爲要添加代碼工件的項目,應該沒有問題添加CodeClasses,CodeFunctins和其他事情很容易。

請注意: 擴展Visual Studio可能會非常棘手(由於extensibillity框架的COM性質),所以請務必先創建一個很好的證明概念。

相關問題