[英]How to CreateObject in C#?
我想將以下VB6代碼轉換為C#
If optHost(0).Value Then
Set m_oScpiAccess = New IcSCPIActiveX.IcSCPIAccess
Else
sHost = txtHost.Text
Set m_oScpiAccess = CreateObject("Exfo.IcSCPIActiveX.IcSCPIAccess", sHost)
End If
我使用TlbImp.exe為COM類創建包裝器,然后嘗試執行以下操作:
if (string.IsNullOrEmpty(host))
{
// this works
IcSCPIAccess = new IcSCPIAccess();
}
else
{
// throws MissingMethodException
IcSCPIAccess = (IcSCPIAccess)Activator.CreateInstance(
typeof(IcSCPIAccessClass),
host);
}
但是沒有構造函數接受host
參數
這不是構造函數調用。 sHost變量包含一台計算機的名稱,該計算機提供進程外COM服務器。 Type.GetTypeFromProgId()通過使用允許指定服務器名稱的重載來提供等效的功能:
var t = Type.GetTypeFromProgID("Exfo.IcSCPIActiveX.IcSCPIAccess", sHost, true);
obj = (IcSCPIAccess)Activator.CreateInstance(t);
我將其命名為“ obj”,請避免給變量指定與接口類型相同的名稱。 龐大的工作量仍可能出錯,使COM服務器在客戶端和服務器計算機上正確注冊並正確設置DCOM安全對於使此代碼正常工作至關重要。 在確定原始代碼正常工作之前,請不要嘗試此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.