Вызов методов с дополнительными параметрами посредством отражения

Я столкнулся с другой проблемой с помощью C# 4.0 с дополнительными параметрами.

Как я вызываю функцию (или скорее конструктор, я имею ConstructorInfo объект), для которого я знаю это, не требует никаких параметров?

Вот код, который я использую теперь:

type.GetParameterlessConstructor()
    .Invoke(BindingFlags.OptionalParamBinding | 
            BindingFlags.InvokeMethod | 
            BindingFlags.CreateInstance, 
            null, 
            new object[0], 
            CultureInfo.InvariantCulture);

(Я только что попробовал различным BindingFlags).

GetParameterlessConstructor пользовательский дополнительный метод, для которого я записал Type.

55
задан Alexei Levenkov 25 September 2014 в 14:46
поделиться

1 ответ

Необязательные параметры обозначаются обычным атрибутом и обрабатываются компилятором.
Они не влияют (кроме флага метаданных) на IL и не поддерживаются напрямую отражением (за исключением свойств IsOptional и DefaultValue ) ).

Если вы хотите использовать необязательные параметры с отражением, вам необходимо вручную передать их значения по умолчанию.

23
ответ дан 26 November 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: