У меня есть метод, объявленный в интерфейсе, например:
public interface IInterface
{
void DoSomething(string format, params object[] arguments);
}
Я динамически загружаю управляемый класс C ++, который использует реализацию этого интерфейса. Интерфейс и реализация оба C #.
IInterface^ foo = gcnew Implentation();
Этот звонок в порядке:
foo->DoSomething("string", someParam);
Сбой вызова:
foo->DoSomething("string");
Похоже, что если нет параметров для передачи, он просто не может разрешить метод, который должен принимать любое количество параметров (включая, конечно, ноль). Возможно, я мог бы использовать nullptr в качестве заполнителя, но это довольно уродливо, или я мог бы добавить избыточную перегрузку DoSomething(string format)
, что тоже не здорово, но лучше, чем делать все вызовы более неудобными, чем они должны быть.
Я что-то упустил или это не поддерживается? Все помощники в Интернете показывают, как объявлять эквивалентные параметры в c ++, но это не помогает в моем сценарии.