MATLAB Answers

Trouble Using Abstract Class from .NET Assembly

7 ビュー (過去 30 日間)
Kian Milani
Kian Milani 2020 年 1 月 5 日
回答済み: Andrew Janke 2020 年 1 月 31 日
I am trying to communicate with a piezoelectric driver made by Thorlabs, which operates with their Kinesis software. I need to use the ThorlabsGenericPiezoCLI class within the Thorlabs.MotionControl.GenericPiezoCLI assembly, however, I get an error when I try to create an instance of the class. The code is
% Define the path to the assembly
thorlabs_asm_path = 'C:\Program Files\Thorlabs\Kinesis\';
genPiezo_asm_name = 'Thorlabs.MotionControl.GenericPiezoCLI.dll';
% Add the assembly
genPiezo_asm = NET.addAssembly(fullfile(thorlabs_asm_path,genPiezo_asm_name));
% define the class from th assembly
genPiezo_cls = Thorlabs.MotionControl.GenericPiezoCLI.Piezo.ThorlabsGenericPiezoCLI;
The error is
Error using Thorlabs.MotionControl.GenericPiezoCLI.Piezo.ThorlabsGenericPiezoCLI
Abstract classes cannot be instantiated. Class 'Thorlabs.MotionControl.GenericPiezoCLI.Piezo.ThorlabsGenericPiezoCLI' defines abstract methods and/or properties.
I guess my first question is how would I use the methods and properties that are within this class when it can't be instatiated? Or, if I use other subclasses that are from a different assembly but inherit from this abstract class, then do I need to instantiate this abstract class at all?

  0 件のコメント

サインイン to comment.

回答 (1 件)

Andrew Janke
Andrew Janke 2020 年 1 月 31 日
You do not need to, and in fact cannot, directly instantiate this abstract class. That's what an abstract class is: a class with an incomplete definition that cannot be instantiated on its own. You need to instantiate a "concrete" subclass of it that provides a complete implementation. Check the Thorlabs doco to find out which subclass you should be using in this case.

  0 件のコメント

サインイン to comment.

サインイン してこの質問に回答します。


Translated by