[英]Helix 3D Toolkit - An object reference is required for the non-static field
[英]Helix 3D Toolkit - object reference is required for the non-static field
我尝试使用打开的文件对话框加载3d模型,因此单击按钮可以选择一个.obj文件并显示它:
Model3DGroup groupLoad = HelixToolkit.Wpf.ModelImporter.Load("C:....");
public static Model3DGroup Load(string path)
{
if (path == null)
{
return null;
}
Model3DGroup model = null;
string ext = System.IO.Path.GetExtension(path).ToLower();
switch (ext)
{
case ".3ds":
{
var r = new HelixToolkit.Wpf.StudioReader();
model = r.Read(path);
break;
}
case ".lwo":
{
var r = new HelixToolkit.Wpf.LwoReader();
model = r.Read(path);
break;
}
case ".obj":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.Read(path);
break;
}
case ".objz":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.ReadZ(path);
break;
}
case ".stl":
{
var r = new HelixToolkit.Wpf.StLReader();
model = r.Read(path);
break;
}
case ".off":
{
var r = new HelixToolkit.Wpf.OffReader();
model = r.Read(path);
break;
}
default:
throw new InvalidOperationException("File format not supported.");
}
return model;
}
要解决此问题:
非静态字段,方法或属性'ModelImporter.Load(string,Dispatcher,bool)'需要对象引用
我添加了这个:
var importer = new HelixToolkit.Wpf.ModelImporter();
var groupLoad = importer.Load("C:....");
任何人的想法,这里可能出什么问题了?
问题是您尝试调用ModelImporter
的Load
方法。 ModelImporter
是一个class
,如果您尝试调用一个class
的方法,那么您将尝试运行一个static
方法,即类级别的方法。 但是, Load
是实例级别。
让我给你举个例子:
如果您有一个Bird
class
,它表示所有Bird
对象,则调用Bird.migrate()
,这是所有Bird
对象执行的方法。 但是,如果实例化Bird
,则可以调用fly
。 在我们的示例中, migrate
是Bird
对象一起执行的一种方法,而fly
是单独的动作。 Bird
对象可以fly
,但是由于fly
是实例级操作,因此无法由所有Bird
执行。
为了解决这个问题,由于Load
是一个实例级方法,因此您必须实例化class
:
ModelImporter import = new ModelImporter();
device = import.Load(model);
在这里,您将创建一个单独的ModelImporter
实例,因此可以通过它访问Load
。 如果方法是static
,则它是class
级别的,否则是实例级的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.