我有一个使用VTK的C ++程序,我试图用C#重写。我安装了以下Nuget数据包:
PM> Install-Package Activiz.NET.x86
64bit版本没有任何效果,我不明白为什么,所以我尝试安装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
任何想法为什么?
答案 0 :(得分:0)
当尝试使用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
}