C# 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)

我有一个程序可以从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);
}