gpt4 book ai didi

flutter - 是否可以在dart中使用C++之类的模板参数?

转载 作者:行者123 更新时间:2023-12-03 04:59:39 30 4
gpt4 key购买 nike

我想在dart中使用C++之类的模板类来概括API_provider层。
但是以下代码无法用于T.myName是未定义的方法。
有没有办法使用T的成员函数?

例如

abstract class AC<T> {
void sayHello() {
print(T.myName); # undefined method
}
}

class Info {
static const name = "hoge";
String myName() => name;
}

我想实现像下面的代码。
abstract class BaseProvider <T> {
static const String baseUrl = 'localhost/';
Future<List<T>> parseList (String Url){
// parse Json to List
// and T.fromMap() is necessary here
}
}

class MyModelProvider extends BaseProvider<MyModel> {
Future<List<MyModel>> searchByName(String name) => parseList(baseUrl + 'my_model?query=${name}');
}

最佳答案

您需要将T强制转换为具有myName方法的类。该代码将起作用:

abstract class AC<T> {
void sayHello() {
print((T as Info).myName);
}
}

但是我建议写一个像 ClassWithMyNameMethod这样的抽象类,它将由您所有的模型类实现:

abstract class ClassWithMyNameMethod {
String name;
String get myName;
}

class Info implements ClassWithMyNameMethod {
@override
String get myName => name;

@override
String name = 'hoge';
}

abstract class AC<T> {
void sayHello() {
assert(T is ClassWithMyNameMethod);
print((T as ClassWithMyNameMethod).myName);
}
}

关于flutter - 是否可以在dart中使用C++之类的模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787682/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com