Вызов методов взаимодействия объектов, VB против C # - PullRequest
0 голосов
/ 07 апреля 2009

В 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 # ... спасибо!

1 Ответ

1 голос
/ 07 апреля 2009

Позднее связывание приходит в C # в 4.0. В то же время вы можете обернуть функцию в VB.NET и использовать C # для вызова метода VB.NET, который вызывает метод VB6.

Поскольку приведение к нужному типу работает в C #, означает ли это, что VB.NET видит правильный тип, а C # видит его как Object?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...