Вызов метода VB6 из C# из динамического объекта с ByRef и необязательными параметрами

Обычно я без проблем делаю вызовы методов класса динамически, но только этот метод не работает, всегда возвращает ошибку:

Dynamic conn = Activator.CreateInstance(Type.GetTypeFromProgID("MyTeam.MyClass"));
bool test = false;
conn.MyFunction(100,"test",DateTime.Now, test, test, "another","another","another");

Оригинальный метод внешнего класса с VB:

Public Function MyFunction(ByVal Id As Integer, ByVal Var1 As String, ByVal Fecha As Date, 
                                   Optional ByRef Opcion1 As Boolean = False, 
                                   Optional ByRef Opcion2 As Boolean = False, 
                                   Optional ByVal Var1 As String = "", 
                                   Optional ByVal Var2 As String = "",
                                   Optional ByVal Var3 As String = "" ) As String
  • Вопрос 1: Можно ли опустить необязательные параметры?

  • Вопрос 2: Возможен ли вызов с параметрами ByRef другим способом?

ОБНОВЛЕНИЕ 1: Да, С# поддерживает параметры ref/out, но... переменные типа "динамический" вызывающий метод поддерживают этот тип ввода?


person MainMind    schedule 10.01.2018    source источник
comment
В чем ошибка?   -  person Alex Paven    schedule 10.01.2018
comment
Включите ошибку в свой вопрос, чтобы мы знали, какую проблему вы пытаетесь решить.   -  person BlueMonkMN    schedule 10.01.2018
comment
Возможный дубликат дополнительных аргументов out/ref C# 4.0   -  person BlueMonkMN    schedule 10.01.2018
comment
Конечно, C# поддерживает этот тип параметров, но не с динамическими объектами? Аргументы возврата функции недействительны   -  person MainMind    schedule 11.01.2018


Ответы (1)


Чтобы передать byref в С#, вам нужно указать перед параметром ref, когда вы также вызываете функцию.

conn.MyFunction(100,"test",DateTime.Now, ref test, ref test, "another","another","another");
person BlueMonkMN    schedule 10.01.2018
comment
C# без проблем работает со ссылками, объект DYNAMIC инкапсулирует сложность перевода этих ссылок. Проблема заключалась в самом методе VB6!!! решено. - person MainMind; 11.01.2018