swift - 有没有一些方法可以检查类是否是从泛型类型继承的?

标签 swift generics inheritance swift3

是否有一些方法/过程如何检查类是否从泛型类型继承而无需在 swift 中指定确切的泛型类型?

这是一个例子:

class AClass {
}

class BClass<T: UIView>: AClass {
    var a:T?
}

let myClass: AClass = BClass<UIImageView>()

myClass is BClass // false!
myClass is BClass<UIView> // false!
myClass is BClass<UIImageView> // true

我只想检查 myClass 是否为 BClass 类型并访问 a 属性(而不仅仅是检查镜像类型)。

Mirror(reflecting: myClass).subjectType //BClass<UIImageView>.Type

最佳答案

您可以定义一个协议(protocol)(例如 BClassType),让您的泛型类型使用该协议(protocol)。然后,您可以使用 myObject is BClassType 来检查实例是否是使用您的泛型类型定义的。

关于swift - 有没有一些方法可以检查类是否是从泛型类型继承的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784296/

相关文章:

ios - 影响所有 TableView 标题中按钮的操作

ios - 无法将类型 '(_) -> ()' 的值转换为预期的参数类型 '(() -> Void)?'

java - 传递参数的通用方法 - java.lang.ClassCastException : com. google.gson.internal.LinkedTreeMap

java - 你如何在 java 中处理 "super"泛型?

c++ - 我需要实现自己的 QAbstractTableModel 吗?

c# - EntityFramework Code First继承与自定义鉴别器

java - 反序列化时如何找到对象所属的正确子类?

ios - 如何在 iOS 10 Swift 3 中初始化 NSFetchedResultsController

swift - 在苹果 Swift 中使用巨大的数字

c# - 在 C# 中创建泛型类字典的辅助方法