C# ViewModel函数有一些无效参数
我有一个程序可以从json中获取一些数据,将其放在listview中,然后我可以按刷新按钮获取新数据。当我第一次按下按钮获取数据时,但如果我再次按下按钮,我会看到“与'MyApp.ViewModels.TableViewModel.UpdateWithModel(MyApp.Model.TableModel)'匹配的最佳重载方法具有一些无效参数” TableModel.cs(模型) TableViewModel.cs(ViewModel) MainViewModel.cs(ViewModel)C# ViewModel函数有一些无效参数,c#,compiler-errors,C#,Compiler Errors,我有一个程序可以从json中获取一些数据,将其放在listview中,然后我可以按刷新按钮获取新数据。当我第一次按下按钮获取数据时,但如果我再次按下按钮,我会看到“与'MyApp.ViewModels.TableViewModel.UpdateWithModel(MyApp.Model.TableModel)'匹配的最佳重载方法具有一些无效参数” TableModel.cs(模型) TableViewModel.cs(ViewModel) MainViewModel.cs(ViewModel)
public observeCollection NewMeasurements{get;set;}
公共按钮命令刷新fnc{get;set;}
private tableServer iotTable=new tableServer();
void RefreshData()
{
//以JSON数组格式从服务器读取数据
dynamic measurementsJsonArray=iotTable.getMeasurements();
//将通用JSON数组容器转换为特定类型的列表
dynamic measurementsListA=measurementsJsonArray.ToObject();
//向集合中添加新元素
if(NewMeasurements.Count
编辑
在这一行中,NewMeasurements[i]。更新模型(measurementsListA)代码>我刚刚将measurementsListA替换为measurementsListA[I],它成功了
谢谢您的回答,我一定会注意动态类型。看起来您的方法正在等待TableModel
public void UpdateWithModel(TableModel model)
但是你试着给它一个列表
dynamic measurementsListA = measurementsJsonArray.ToObject<List<TableModel>>();
NewMeasurements[i].UpdateWithModel(measurementsListA);
dynamic measurementsListA=measurementsJsonArray.ToObject();
NewMeasurements[i].更新模型(measurementsListA);
编辑
正如.Doc在评论中所说,如果没有必要,使用“动态”类型是危险的。如果使用静态类型,则会出现编译器问题,而不是运行时问题。在以下代码中:
for (int i = 0; i < NewMeasurements.Count; i++)
{
NewMeasurements[i].UpdateWithModel(measurementsListA);
}
for(int i=0;i
…您正在传递一个列表measurementsListA
,而UpdateModel
需要一个TableModel
对象
在第一次刷新期间,由于newmeasures为空,因此不会弹出错误。使用动态
的危险。如果您将measurementsListA
定义为List
而不是dynamic
,它甚至不会编译。当measurementsListA的元素少于newmeasures时,执行measurementsListA[i]不会起作用。如果某些答复提供了您问题的答案,您应该接受这些答案,以便将此问题标记为已回答。
public void UpdateWithModel(TableModel model)
dynamic measurementsListA = measurementsJsonArray.ToObject<List<TableModel>>();
NewMeasurements[i].UpdateWithModel(measurementsListA);
for (int i = 0; i < NewMeasurements.Count; i++)
{
NewMeasurements[i].UpdateWithModel(measurementsListA);
}