【发布时间】:2014-10-06 07:34:29
【问题描述】:
我有非常基本的模型,比如
class Model {
}
class User : Model {
}
class Group : Model {
}
现在我需要检查泛型类型以了解哪个类作为参数发送
func getRepository<ModelType: Model>() {
if (typeof(ModelType) == User.self) {
// Do something specific to User
} else {
.....
}
}
但我不知道如何获取 GENERIC TYPE 的类。
非常感谢您的回答。
干杯
【问题讨论】:
-
你打算如何调用这个函数?
-
除非您将参数传递给
getRepository,否则编译器无法推断ModelType的类型(除了某种Model)。如果您尝试调用getRepository()并像这样定义它(即使其中没有任何内容),您将收到编译错误。我猜你实际上想要这样的东西:func getRepository<ModelType: Model>(model: ModelType)? -
@JoachimIsaksson 我打算将其称为
getRepository<User>() -
@MikeS
getRepository<ModelType: Model>(model: ModelType)看起来很丑,你不觉得吗?我应该能够像 C# 一样获得通用类型