繁体   English   中英

调用泛型方法时如何推断参数类型?

[英]How to infer argument type when calling a generic method?

我有一个通用方法:

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时,我可以访问结果。

您的ToDataTable带有一个List,并且您试图将其传递给LeagueFixtures类型的对象(这是反序列化方法返回的内容)。 您可以使用myVar变量创建一个新列表以传递到ToDataTable中:

DataTable myDataTable = ToDataTable<LeagueFixtures>(new List<LeagueFixtures>{myVar});

请注意,由于可以推断类型,因此此时不需要<LeagueFixtures>

编辑

至于你的问题访问myVar.fixtures.result -你不能这样做,因为myVar.fixtures是一个List<LeagueFixtures>你需要调用.result该列表中的对象上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM