我對.NET中的Com Plus Interop服務瞭解不多 - 我讓.NET完成所有骯髒的工作,並且跨越我的手指,它將起作用。那麼,現在我卡住了。在.NET interop中傳遞vb6對象類型參數byref會導致類型不匹配
我有一個在VS 2010 C#程序中使用VB6編譯COM DLL的引用。這是我創建的發票。
我實例化一個對象:
UIInvoice Invoice = new CUIInvoice();
然後我設置一些發票頭部屬性:
Invoice.set_InvoiceType("VO");
Invoice.set_InvoiceTypeID(2);
而現在,我想創造一些發票明細行,我通過調用做添加發票子對象的方法:
Invoice.InvoiceDetails.Add("StringParam1", "StringParam2", Invoice);
函數的第三個參數呼叫被定義在我的VB6添加功能:
ByRef Parent As Object
當我運行我的.NET程序,我得到一個「類型不匹配」的錯誤時,我打的添加行。
任何人都可以以簡單的方式提出一種方法,我可以得到這個工作嗎?
您通常會在C#中寫入'ref Invoice'。猜猜你在使用C#版本4.沒有其他顯而易見的事情,它只是不喜歡CUIInvoice作爲父項。也許是因爲「UI」。 – 2012-04-04 20:29:10
嗨漢斯,謝謝你的回覆。當我通過ref傳遞Invoice對象時,實際上有一個編譯器錯誤 - 這可能是對知識更豐富的人的線索:無法從'ref UIInvoice.CUIInvoice'轉換爲'ref object'。如果我在對象temp = Invoice中聲明靜態對象類型;並通過ref傳遞temp,我得到相同的類型不匹配錯誤。 – user529703 2012-04-05 11:10:24
UIInvoice和CUIInvoice有什麼區別?如果您將發票聲明爲:CUIInvoice Invoice = new CUIInvoice();? – 2012-04-05 13:23:06