Это результат предыдущего вопроса. Я пытаюсь преобразовать код Vb.net в C#. Создается объект com (atlDirectorObject.atlDirector), и он используется для создания другого объекта com (atl3270Tool) по параметру. atl3270Tool не создается в версии C#. Я иду по неправильному пути, пытаясь ссылаться на atl3270Tool через массив объектов?Создание объекта com с другим объектом com в C#
'working vb code
Dim atl3270Tool
Dim ErrMsg As String
Dim atlDirectorObject = CreateObject("atlDirectorObject.atlDirector")
atlDirectorObject.CreateTool("3270", 1, True, True, 0, atl3270Tool, ErrMsg)
'atl3270Tool is working com object at this point = success
//non-working c# code
object atl3270Tool = null;
string ErrMsg = null;
object atlDirectorObject = Activator.CreateInstance(Type.GetTypeFromProgID("atlDirectorObject.atlDirector"));
//atlDirectorObject is a com object now
//attempt to reference atl3270Tool inside an object array
object[] p = { "3270", 1, true, true, 0, atl3270Tool, ErrMsg };
Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(atlDirectorObject, null, "CreateTool", p, null, null, null, false);
//>>>>>>>>atl3270Tool is still null at this point<<<<<<<<<
Да, вы делаете это неправильно. Используйте atl3270Tool = p [5] * после * вызова. И вы должны использовать аргумент CopyBack. Когда я советовал использовать vb.net для написания этого кода, я, конечно же, не имел в виду * это *. –