給VS寫個擴展來聽音樂的說法,緣來已久,這兩天做了個初版,使用豆瓣FM,先發出來。
插件現在只做了VS2013的,別的版本有待下一步支持。
現在暫時只有一個Adornment(就是那個有封面的),一個Margin(編輯器最下面,准備用來放歌詞,沒有做),一個Menu(最上面的菜單),一個ToolBar(工具欄啊,就那個提示播放的)。
只完成了播放功能,切換頻道准備明天做,登錄功能也要後續完善。
關於豆瓣FM的WPF程序,做過的人也不少,這裡對兩個項目有所參考並繼續參考,在這裡列出:煙灰灰 和 kfstorm
現在比較反感DI、IoC,但是不知不覺又用了。
其實做這種VS擴展很簡單,和擴展有關的東西很少,應用程序應該怎麼做,這裡就怎麼做,只不過寫的程序不是運行主體罷了。
但是後續要做的還不少,首先Adornment這個東西,不應該在每個TextView中包含一個,也就是說應該一個VS只有這一個出現,所以這裡不應該使用IWpfTextViewCreationListener接口。
話又說回來,擴展是對於VS擴展的,同時打開幾個VS很常見,得想想辦法怎麼做成統一控制之類的,用remoting什麼的。
還需要一個Tool Window做主界面,需要Options Page,還要在快速啟動(Ctrl + Q)那裡弄個搜索歌曲,加上歌詞、用戶、快捷鍵支持等,後續可能還會增加播放本地音樂等功能,想想也有不少。
又說回MEF,在原來VSX項目中我又自己維護了一個IoC容器,但是VS擴展本來就是使用MEF,翻看了不少項目,終於找到如下代碼片段:
var componentModel = (IComponentModel)_serviceProvider.GetService(typeof(SComponentModel)); var player = componentModel.DefaultExportProvider.GetExportedValue<IPlayer>();
其中_serviceProvider就是IServiceProvider接口對象,VSX中最常見的Package就是一個IServiceProvider。
當然,在使用Export導出的類,也就是MEF組件中,是直接可以使用Import特征來注入的。
這個項目不會花費我太多功夫,只是興趣所致。希望同樣有興趣的人可以繼續做下去。
這裡給出源碼:https://github.com/NanQi/VSXMusic