Я столкнулся с другой проблемой с помощью C# 4.0 с дополнительными параметрами.
Как я вызываю функцию (или скорее конструктор, я имею ConstructorInfo
объект), для которого я знаю это, не требует никаких параметров?
Вот код, который я использую теперь:
type.GetParameterlessConstructor()
.Invoke(BindingFlags.OptionalParamBinding |
BindingFlags.InvokeMethod |
BindingFlags.CreateInstance,
null,
new object[0],
CultureInfo.InvariantCulture);
(Я только что попробовал различным BindingFlags
).
GetParameterlessConstructor
пользовательский дополнительный метод, для которого я записал Type
.
Необязательные параметры обозначаются обычным атрибутом и обрабатываются компилятором.
Они не влияют (кроме флага метаданных) на IL и не поддерживаются напрямую отражением (за исключением свойств IsOptional
и DefaultValue
) ).
Если вы хотите использовать необязательные параметры с отражением, вам необходимо вручную передать их значения по умолчанию.