簡體   English   中英

如何在C#中創建對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM