Dart:获取通用List类型的子类型

时间:2018-08-23 12:39:43

标签: dart flutter

请考虑以下方法:

public Guid BookId { get; set; }
public Book Book { get; set; }
public int Number { get; set; }
public AcquisitionDetail AcquisitionDetail { get; set; }

可能存在public async Task<IEnumerable<InventoryItem>> GetInventoryItemsAsync() { return await schoolLibraryContext.InventoryItems.Include(inventoryItem => inventoryItem.Book) .Include(inventoryItem => inventoryItem.AcquisitionDetail) .ToListAsync(); } static void parse<T>(String input, T instance) 类型的情况。如何获得T的子类型?请注意,目前List中没有元素。这样做例如List是没有选择。

如果List的类型为List[0].runtimeType,我想获取T

如何在Dart中做到这一点?

3 个答案:

答案 0 :(得分:0)

该特殊功能不可用,因为它会使摇树变得复杂。

根据您的用例,您也许可以摆脱类似的情况:

void parseList<T>(String input, List<T> instance) {
  // T is now the static type of List<T>
}

但是,如果List的类型是静态未知的,则将无法使用。

答案 1 :(得分:0)

(有点)可以做到,但是这是一个非常丑陋的解决方法。一个条件是您必须必须初始化列表才能访问其类型。

List<Something> someList = new List<Something>();
String type = someList.runtimeType.toString(); // List<Something>

然后您就可以读取类型并对其进行处理。

答案 2 :(得分:-2)

我不确定您要做什么,但是也许您可以编写这样的方法:

static void parseList<T>(String input, List<T> list)

请提供更多背景知识,以获得更好的答案。