В C # я вызываю функцию для класса взаимодействия ( Connection , написанного на VB6), который сам возвращает простой объект ( System ). Затем есть функция для этого объекта ( InitialiseData ), которую я также вызываю (даже если компилятор не знает об этом).
var isInitialised = Connection.System.InitialiseData(path);
Проблема в том, что из-за того, что системный объект возвращает простой объект, я получаю ошибку компиляции «не удается разрешить символ». Я могу понять, почему, но то же самое прекрасно работает в VB.NET:
Dim isInitialised As Boolean = Connection.System.InitialiseData(path)
Предположительно, VB.NET делает что-то в фоновом режиме, что позволяет некое неявное позднее связывание, в то время как C # - нет? Есть ли способ заставить C # компилировать таким же невежественным способом?
На самом деле в этом случае мне кажется, что я могу обойти его, сначала приведя Object к явному типу взаимодействия:
var system = (QLO.System)Connection.System;
var isInitialised = system.InitialiseData(path);
Но мне все еще интересны ответы для случаев, когда я не смогу быть в состоянии привести к типу, но все еще хочу вызывать функции для него. Простите, если это глупый вопрос, я только начинаю переходить с VB.NET на C # ... спасибо!