我將不得不生成很多extern,這樣我就可以從另一種編程語言的.NET框架與我正在開發的開源項目進行交互。我想知道是否有任何方法將所有的MSDN類引用作爲XML或其他東西?我正在考慮解析實際的HTML,但看起來它不會很直接,所以我想知道是否有更好的方法來做到這一點。自動化.NET框架類引用
我可以從他們那裏得到的最詳細的信息越多越好。因此,例如,如果它在Compact Framework上工作,或版本差異,能夠得到很好。
非常感謝!
我將不得不生成很多extern,這樣我就可以從另一種編程語言的.NET框架與我正在開發的開源項目進行交互。我想知道是否有任何方法將所有的MSDN類引用作爲XML或其他東西?我正在考慮解析實際的HTML,但看起來它不會很直接,所以我想知道是否有更好的方法來做到這一點。自動化.NET框架類引用
我可以從他們那裏得到的最詳細的信息越多越好。因此,例如,如果它在Compact Framework上工作,或版本差異,能夠得到很好。
非常感謝!
示例代碼(直接在這個答案寫的,你必須修改它):
//Will load your assembly and all .Net core assemblies.
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
Console.WriteLine("Going through " + assembly.Location);
foreach(var type in assembly.GetTypes())
{
Console.WriteLine("Type " + type.FullName + " has the following methods:");
for (var method in type.GetMethods())
{
// you can create another loop to go through all method arguments.
Console.WriteLine(method.Name);
}
}
}
要經過的所有組件,只需使用Directory.GetFiles()在C中的所有子目錄:\ Windows下\ Microsoft.Net \ Assembly \ GAC_MSIL和Assembly.Load它們。
您是否看過Pinvoke.net,這是一個完整的與外部窗口DLL(包括用於Compact Framework的Windows CE DLL)接口的網站。
對於非Windows DLL互操作,Pinvoke Interop Assistant可幫助您找出用於與非受管DLL進行對話的extern。
你可以在DLL上使用反射來獲取類,方法參數等的列表。我認爲這是你最終需要的。
看看這裏瞭解更多信息:http://msdn.microsoft.com/en-us/library/ms173183(VS.80).aspx
你可以很容易地編寫一些Net代碼對類數據打印出來,甚至用它在另一種語言來自動生成代碼。
我不知道你打算怎麼處理這個。當然,如果你想使用.Net框架,那麼在.Net中使用它是有意義的。如果你想要開放源代碼,你看看莫諾(http://www.mono-project.com/Main_Page)?
嘿!謝謝你的提示。我真的可以像使用反射一樣查看mscorlib。但問題是,我將使用特定於我正在使用的.dll的代碼。也許這是一個選項,可以讀取不同版本(包括單聲道)中的所有.dll文件並將其差異分類。但是如果已經有某種機器準備的doc文件,它會容易得多;)。 – Waneck 2010-10-15 13:22:27
「MSDN類引用」:你的意思是文檔?這是否可以用語言提供方法語法? – Richard 2010-10-15 12:42:38
是的!我正在擴展一個編譯器來支持C#目標。所以這意味着我必須編寫所有的外部代碼,以便能夠與現有的C#代碼進行交互。現在對我來說最好的選擇是閱讀整個MSDN HTML文檔並解析它們。但我現在正在尋找更好的方法來做到這一點。 – Waneck 2010-10-15 13:20:14