我是Swift开发人员,是Dart的新手。我正在尝试编写一些通用方法。

我想知道我是否可以在Dart中实现类似的目标。

//Swift version

public func modelFrom<T: Mappable>(response: Encodable?, model: T.Type) -> T? {

    if let response = response, let string = response.jsonString {
        return T(JSONString: string)
    }

    return nil

}

// The method can be called like this

let responseModel = modelFrom(response: response, model: FoodLogModel.self)

对于Dart,我可以转换泛型类的类型吗?像Swift中的<T: Mappable>吗?

Dart中的runtimeType是否等效于Swift中的<ClassName>.self

非常感谢

这是我尝试过的
import 'package:dartson/dartson.dart';
import 'package:mobile_corelib/base/model.dart';

T requestFrom<T>(BaseModel model, Type T) {

  try {

    var dson = new Dartson.JSON();
    var object = dson.map(dson.encode(model), T.runtimeType);

    return object;
  } catch(error) {
    return null;
  }
}
var dick = requestFrom(model, AccessTokenRequest().runtimeType)

但是我不知道如何传递Class type。我应该使用dynamic吗?或Type

最佳答案

Dart中的runtimeTypeType类型的值,这与在通用类型参数中编写类型时发生的事情不同。

例如,new List<String>()有效,但是new List<''.runtimeType>()是语法错误。

通常,Type非常有限。您不能使用它来创建新实例-除非您在VM中,您可以在其中使用镜像。

关于swift - 传递runtimeType作为通用函数参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50326435/

10-10 17:56