[英]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.