我有一个通用的方法:
public static DataTable ToDataTable<T>(List<T> data)
我试图通过以下方式打电话给它:
var myVar= JsonConvert.DeserializeObject<LeagueFixtures>(url);
DataTable myDataTable = ToDataTable(myVar);
但是我收到错误“无法根据用法推断出参数的类型。请尝试专门指定类型参数。”在我调用ToDataTable的行上。
LeagueFixtures类的结构是:
public class Fixtures
{
public string leagueName { get; set; }
public List<LeagueFixtures> fixtures { get; set; }
}
public class LeagueFixtures
{
public string date { get; set; }
public int matchday { get; set; }
public FixtureResult result { get; set; }
}
public class FixtureResult
{
public int goalsHome { get; set; }
public int goalsAway { get; set; }
}
如果我完成了,我可以让它工作:
var myVar= JsonConvert.DeserializeObject<Fixtures>(url);
DataTable myDataTable = ToDataTable(myVar.fixtures);
但是我无法通过执行myVar.fixtures.result来访问结果,而当直接进入LeagueFixtures时我可以访问结果。
答案 0 :(得分:3)
你的ToDataTable接受一个List,你试图传递一个LeagueFixtures类型的对象(这是deserialize方法返回的对象)。您可以使用myVar变量创建一个新列表以传递到ToDataTable:
DataTable myDataTable = ToDataTable<LeagueFixtures>(new List<LeagueFixtures>{myVar});
注意,此时<LeagueFixtures>
是不必要的,因为可以推断出类型。
修改强>
关于您访问myVar.fixtures.result
的问题 - 您无法做到这一点,因为myVar.fixtures是List<LeagueFixtures>
,您需要在该列表中的对象上调用.result
< / p>