首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实例化vtkCommand子级时的Kitware VTK Activiz.NET InvalidCastException

实例化vtkCommand子级时的Kitware VTK Activiz.NET InvalidCastException
EN

Stack Overflow用户
提问于 2016-04-21 12:35:24
回答 1查看 460关注 0票数 1

我有一个使用VTK的C++程序,我正在尝试用C#重写它。我安装了以下Nuget包:

代码语言:javascript
复制
PM> Install-Package Activiz.NET.x86

64位版本都不起作用,我不明白为什么,所以我尝试安装32位版本,它似乎更好一点……但是,我仍然有一个问题:

使用这个继承自vtkCommand的简单类:

代码语言:javascript
复制
class VtkBoxCallback : vtkCommand
{
    public VtkBoxCallback() {}
}

当我这样做的时候:

代码语言:javascript
复制
VtkBoxCallback l_callback = new VtkBoxCallback();

我得到了以下异常:

代码语言:javascript
复制
unhandled exception of type 'System.InvalidCastException' occurred in Kitware.VTK.dll

specified cast is not valid

知道为什么吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 06:09:02

在尝试使用vtk (C++)中使用的主题/观察者和命令设计模式实现动画时,我也遇到了同样的问题。我猜这个问题与vtkCommand是一个包装类的事实有关。我没有尝试使用相同的模式,而是使用了在Activiz上添加的事件。换句话说,与其这样做,不如:

代码语言:javascript
复制
public class MyCommandClass : vtkCommand
{
    public MyCommandClass() { }

    public override void Execute(vtkObject caller, uint eventId, IntPtr callData)
    {
         //My callback code
    }
}

还有这个:

代码语言:javascript
复制
vtkClass myObservedObject = new vtkClass();
MyCommandClass myCommandObject = new MyCommandClass();
myObservedObject.AddObserver((uint)vtkCommand.EventIds.Event, myCommandObject, 1f);

我这样做了:

代码语言:javascript
复制
vtkClass myObservedObject = new vtkClass();
myObservedObject.Event += MyCallback;

还有这个:

代码语言:javascript
复制
void MyCallback(vtkObject sender, vtkObjectEventArgs e)
{
    //My callback code
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36759761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档