[英]Use ActiveX in C#
我有一個像這樣的JavaScript代碼:
o = new ActiveXObject("ASDFsome.Application");
utilites = WScript.CreateObject("ASDF.Utilites.UTF.Converter")
utilites.Convert(outFile, xmlProp.xml)
現在我想用C#代碼重寫它。 我該如何在Net中使用ActiveXObject?
這在很大程度上歸功於為C#版本4添加了動態關鍵字的原因:
dynamic utilites = Activator.CreateInstance(Type.GetTypeFromProgID("ASDF.Utilites.UTF.Converter"));
utilites.Convert(outFile, xmlProp.xml);
如果你堅持使用早期版本,那么使用VB.NET類庫是最好的方法。 它直接支持腳本代碼中使用的CreateObject()函數。
最后但並非最不重要的是,與您一直使用的腳本語言不同,C#和VB.NET都支持早期綁定。 首先添加對類型庫的引用,Project + Add Reference,然后使用COM選項卡或Browse選項卡來選擇包含類型庫的.tlb或.dll文件。 如果組件設計為僅使用后期綁定腳本語言,則可能沒有。 我們無法幫助您找到合適的類型庫,供應商或作者會知道。
真的最后但並非最不重要,這聞起來像一個知道如何讀取utf-8編碼的XML文件的實用程序。 使用System.Xml命名空間在.NET中已經得到了很好的支持。
一種可能性是使用反射:
var utilitiesType = Type.GetTypeFromProgID("ASDF.Utilites.UTF.Converter");
var instance = Activator.CreateInstance(utilitiesType);
utilitiesType.InvokeMember(
"Convert",
BindingFlags.InvokeMethod | BindingFlags.Public,
null,
instance,
new[] { "outputFile", "xmlProp.xml" }
);
另一種可能性是為COM對象生成強類型代理。 右鍵單擊您的項目,添加引用 - > COM選項卡 - >在列表中選擇COM對象或從其DLL加載它。 然后,Visual Studio將為此COM對象生成強類型包裝程序集,並自動將其添加為引用。 接下來,您可以直接使用COM對象並保持其強類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.