2008-10-12 72 views
1

我正在編寫F#編譯器,我希望能夠在.net運行時訪問unmanaged metadata COM interfaces。在任何人提到它之前,Reflection.Emit不適合我的目的,我也不想使用元數據COM接口以外的任何其他方法。如何從C#或F#訪問IMetaDataEmit和其他MetaData COM接口?

我已經導入mscoree.tlb但它似乎並不包括我所需要的接口。

我感興趣的接口包括:IMetaDataEmit。任何與此相關的示例代碼都會非常有用,儘管目前爲止我還沒有找到任何代碼。

C#的樣品將被罰款,因爲我可以很容易地將它們轉換爲F#。

在此先感謝任何人誰可以幫我這個非常模糊查詢!

更新:我現在已經通過使用接口GUID編寫顯式COM引用來進行排序!這裏

回答

1

一種選擇是創建自己的項目,這些接口(使用cor.h他們的定義)編譯成一個類型庫,然後你可以TLBIMP進入托管程序集。我意識到將C頭代碼轉換爲IDL會非常繁瑣,但這可能會通過一些文本處理腳本實現自動化(或部分自動化)。

+0

非常感謝您的回覆:-)然而,我現在已經設法使用基於cor.h中引用的GUID的手動COM接口進行排序,結果是我認爲無論如何都是最好的方法! – ljs 2008-10-25 15:14:31

1

我希望你找到了mdbg sample其中包括包裹究竟你需要的接口源代碼。

+0

哦,我的上帝,我很興奮!讓我們看看你是對的... – ljs 2009-01-05 16:08:52