我有一个使用VTK的C++程序,我正在尝试用C#重写它。我安装了以下Nuget包:
PM> Install-Package Activiz.NET.x8664位版本都不起作用,我不明白为什么,所以我尝试安装32位版本,它似乎更好一点……但是,我仍然有一个问题:
使用这个继承自vtkCommand的简单类:
class VtkBoxCallback : vtkCommand
{
public VtkBoxCallback() {}
}当我这样做的时候:
VtkBoxCallback l_callback = new VtkBoxCallback();我得到了以下异常:
unhandled exception of type 'System.InvalidCastException' occurred in Kitware.VTK.dll
specified cast is not valid知道为什么吗?
发布于 2020-01-24 06:09:02
在尝试使用vtk (C++)中使用的主题/观察者和命令设计模式实现动画时,我也遇到了同样的问题。我猜这个问题与vtkCommand是一个包装类的事实有关。我没有尝试使用相同的模式,而是使用了在Activiz上添加的事件。换句话说,与其这样做,不如:
public class MyCommandClass : vtkCommand
{
public MyCommandClass() { }
public override void Execute(vtkObject caller, uint eventId, IntPtr callData)
{
//My callback code
}
}还有这个:
vtkClass myObservedObject = new vtkClass();
MyCommandClass myCommandObject = new MyCommandClass();
myObservedObject.AddObserver((uint)vtkCommand.EventIds.Event, myCommandObject, 1f);我这样做了:
vtkClass myObservedObject = new vtkClass();
myObservedObject.Event += MyCallback;还有这个:
void MyCallback(vtkObject sender, vtkObjectEventArgs e)
{
//My callback code
}https://stackoverflow.com/questions/36759761
复制相似问题