c # вызов метода из интерфейса или абстрактного класса в static void - PullRequest
0 голосов
/ 27 августа 2018

Я обычно являюсь разработчиком javascript, но для своей компании я только начал изучать c #, чтобы использовать API CimatronE 13 для разработки пользовательских инструментов PDM из командной строки для этого программного обеспечения для 3D-моделирования.

Как я 'Когда я делаю успехи в понимании языка программирования, есть такая разочаровывающая ситуация, когда я хочу использовать метод конечной точки API, но мне не удается заставить его работать.

В документации Cimatron говорится следующее:

IPdm :: GetRelatedDocuments

Синтаксис : RelatedDocuments = GetRelatedDocuments (DocumentPath);

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

ввод : (строка) DocumentPath, путь к файлу.Например, \ Документы \ Местоположение \ Папка \ Документ.Файл должен быть "Сборка" или "Чертеж".

Возврат : (вариант) RelatedDocuments, массив типа варианта, каждый элемент которого содержит массив двухмерных строковых типов файлов, относящихся к выбранному.


Это выглядит довольно прямо для меня, поэтому я пытался вызывать его несколькими способами из static void Main() метода, но продолжаю получать ошибки:

var RelatedDocuments = interop.CimBaseAPI.IPdm.GetRelatedDocuments("path");

CS0120: ссылка на объект требуется для нестатического поля, метода или свойства 'IPdm.GetRelatedDocuments (string)'

interop.CimBaseAPI.IPdm pdm = new interop.CimBaseAPI.IPdm();
var RelatedDocuments = pdm.GetRelatedDocuments("path");

CS0144: Невозможно создать экземплярабстрактный класс или интерфейс 'IPdm'

Есть идеи?Это, вероятно, просто, но я все еще новичок с c #: p


РЕДАКТИРОВАТЬ:

Документация Cimatron об интерфейсе interop.CimBaseAPI.IPdm:

Свойства:

Вариант получения запроса (String, DocumentEnumType, DocumentEnumUnit)

Методы:

Aлот, в том числе Variant GetRelatedDocuments ( String )

1 Ответ

0 голосов
/ 27 августа 2018

Как я сейчас вижу ... interop.CimatronE.IPdm - это интерфейс, и для использования его методов нам сначала нужен доступ к приложению Cimatron.Используя объект приложения, мы можем использовать его методы, чтобы получить нужные интерфейсы, такие как IPdm, и использовать их методы.

Следующий код не дает ошибок от компилятора, но делает при выполнении.Похоже, это связано с версией 13 CimatronE, так как объект приложения прекрасно работает с версией 12. Многое изменилось между этими версиями, что, по-моему, является причиной того, что API не работает должным образом, устаревший.

interop.CimAppAccess.AppAccess AppAcc = new interop.CimAppAccess.AppAccess();
interop.CimatronE.IApplication CimApp = /*(interop.CimatronE.IApplication)*/AppAcc.GetApplication();

interop.CimatronE.IPdm pdm = CimApp.GetPdm();

var RelatedDocuments = pdm.GetRelatedDocuments("path");
Console.WriteLine(RelatedDocuments);

Пожалуйста, поправьте меня, если я ошибаюсь!(так как я только начал и все еще изучаю c #)

...