В службе WCF (web?) Извлекайте данные из экземпляра другого класса - PullRequest
0 голосов
/ 29 января 2020

Я должен разработать шлюз, который извлекает данные из BA CNet, сохраняет их в списки и затем предоставляет эти данные через службу wcf (soap). Я должен использовать SOAP и CIM для доставки / предоставления внутрисетевых данных для внешнего мира.

В настоящее время у меня есть эти классы:

  • Gateway.cs, который обрабатывает чтение файла конфигурации .tsv (который описывает, какие устройства ba cnet должны быть найдены в сети, сохранены в списках) и запускает поток для BA CNet. У класса также есть метод, который я хотел бы вызвать из службы wcf, с параметром ID, чтобы он связывал вызов метода GetBACNetValue с классом BA CNet.

  • BA CNet .cs, который обрабатывает все связанные с BA CNet вещи и запрашивает локальную сеть BA CNet. Постоянно запрашивает значения из сети и сохраняет их в списки.

  • Классы обслуживания, связанные с WCF, и некоторые другие, которые я сделал, пытаясь решить эту проблему с помощью обучающих видео.

Так что, когда кто-то вводит URL для доступа к моей службе и дает правильный идентификатор в URL, моя служба возвращает правильные данные. Дело в том, что в первый раз я попытался сделать свои шлюзы и ба cnet классы стати c для прямого доступа к их методам. Друг сказал мне, что это не будет работать, так как «статика не будет переносить данные». Теперь, когда они созданы, я не знаю, как получить доступ к их экземплярам из служебного файла.

Было бы неплохо просто реализовать это следующим образом (в (веб-файле) служебном файле):

(открытая служба)

    int GetBACNetObjectValue(int id) {
       return Gateway.GetBACNetObjectValue(int id);
    }

, которая в свою очередь реализована в Gateway:

    int GetBACNetObjectValue(int id) {
       int result;

       for (int i = 0; i < BACNet.objectIDs.Count; ++i) {
          if (BACNet.objectIDs[i] == id) result = BACNet.objectValues[i];
       }

       return result;
    }

Спасибо за помощь.

...