2017-03-14 3 views
0

クラスがジェネリック型から継承されているかどうかを確認する方法/手順はありますか?ここでクラスがジェネリック型から継承されているかどうかを確認する方法はありますか?

は一例です:

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 
+0

コンパイル時にジェネリックパラメータごとに完全に独立したインスタンスクラスを作成しますが、それらのインスタンスの関係を考慮した情報は保存されませんか? – user28434

答えて

0

プロトコル(例:BClassType)を作成して、汎用タイプにプロトコルを使用させることができます。次に、インスタンスが汎用タイプを使用して定義されているかどうかを確認するために、myObject is BClassTypeを使用できます。

関連する問題