2013-08-09 2 views
1

Извините, если мой вопрос настолько примитивен. Я новичок в C#, и я должен использовать COM-интерфейс (.DLL) и реализовать его в своем коде. Речь идет о часах сопутствующего времени, и мне нужно извлечь данные из своей базы данных. Он использует некоторые классы, и моя цель - извлечь из него «Сообщения». Единственная документация у меня есть это:Использование COM-интерфейса в C# .net

Класс «InsightClass» содержит следующее:

Методы

...

o GetReviewMessages 

o InsightClass 

o Login 

o Logout 

o ReviewMessage 

Обзор событий:

событий ReviewMessage будет срабатывать каждый раз, когда в Insight будет получено новое событие Review.

Извлечение данных: Использование метода «StartLiveReview» начнет получение новых сообщений обзора с сервера Insight, и, наоборот, этот процесс заканчивается методом «EndLiveReview». Можно также получить дискретный набор данных обзора с помощью метода GetReviewMessages. Один определяет желаемые границы даты и времени, в течение которых данные должны быть получены. Insight review:

Вышеуказанные методы приведут к созданию коллекции объектов InsightReview. Используя класс «InsightReviewMessagesClass», можно получить текущий счет объектов «InsightReview» и получить доступ к отдельным объектам «InsightReview» с помощью свойства «Item». Объект «InsightReview» - это сообщение «Обзор». Он обладает следующими свойствами:

о ...

о Сообщение

Не могли бы вы, пожалуйста, дайте мне знать, как я могу связать «GetReviewMessages» метод к «InsightReview» объекты в классе «InsightReviewMessagesClass» в мой код?

спасибо кучу заранее ...

+0

Почему вы отметили свой вопрос с помощью VB.NET в дополнение к C#? Кроме того, если вы просто изучаете C#, я не уверен, что COM - это первое, что вы хотите решить ... мое впечатление в том, что оно может быть довольно сложным (но я сделал очень мало с COM, чтобы я мог быть неправильно). – Tim

+0

Спасибо за ваш комментарий Тим. Причина, по которой я добавил vb.net в качестве тега, заключается в том, что .DLL может использоваться в сетчатом шаблоне MS dot net framewrok. Я развиваюсь долгое время с vb и не слишком хорошо знаком с классами и программированием OOP, к сожалению, бот не новичок полностью ... – Mike

ответ

3

В основном вам нужно добавить ссылку на COM DLL внутри Visual Studio и это создаст новый .NET DLL, которая оборачивается вокруг COM DLL и позволяет использовать COM DLL из C#. Короче вы выполните следующие действия:

  1. Выберите Project> Add Reference
  2. Выберите вкладку COM в диалоговом окне Add Reference.
  3. Прокрутите список компонентов COM до тех пор, пока не найдете DLL/библиотеку COM, выберите его и нажмите «ОК».

По существу, вышеуказанные шаги заставляют Visual Studio запускать Tlbimp для создания .NET-библиотеки DLL, которая является оберткой вокруг объекта COM.

Хороший учебник here (первая часть со всем кодом только пояснительным, чтобы помочь вам понять, что происходит, не перегружен, прыгайте на Example 1: Using TlbImp section для реальных шагов, которые вы должны следовать).

Если у вас все еще есть проблемы, дайте нам больше информации, например, какие шаги вы можете предпринять успешно и, возможно, вставить код из "Code Definition Window" для COM-класса, на который вы ссылаетесь, который должен показывать методы, о которых вы говорите выше.

+1

Большое вам спасибо за ваш ответ. – Mike

+0

@Mike: Мое удовольствие. COM + .NET - это зверь. Позвольте мне знать, если у вас есть еще вопросы. Если этот ответ действительно ответит на ваш вопрос, отметьте этот ответ как принятый: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

+1

Еще раз спасибо ActiveScott. Если честно, я не знаю, как использовать класс «InsightReviewMessagesClass». Это то, что я сделал до сих пор: pClass = new InsightInterface.InsightClass(); InitializeComponent(); private void button1_Click_1 (отправитель объекта, EventArgs e) { pClass.Login («что-то», «что-то», «xx.xx.xx.xxx», xxx); DateTime DateFrom = new DateTime (2013, 8, 8); DateTime DateTo = new DateTime (2013, 8, 8); if (pClass.IsLoggedOn) MessageBox.Show («Записано успешно»); } Я знаю, что должен использовать что-то вроде pClass.GetReviewMessages (DateTo, DateTo); – Mike

0

Там должен быть один обработчик событий в том, который сообщает вам, когда данные InsightReview прибыл

так подписаться, что событие из класса с соответствующей функцией в классе обертке.

+0

Спасибо, ребята, я очень ценю. Да, есть два события: o ConnectionStateChange o ReviewMessage Думаю, вы говорите о событии ReviewMessage. Событие ReviewMessage будет срабатывать каждый раз, когда новое событие Review - это , полученное в Insight. Я не уверен в правилах здесь, но могу отправить полный pdf-файл, если вы могли бы помочь мне в этом, так как мне действительно нужно решить эту проблему. Еще раз спасибо. – Mike

Смежные вопросы