2017-09-18 6 views
0

T.Typeパラメータから実際のオブジェクトを取得しようとしています。ここに私の機能があります。Swiftの汎用T.Typeからオブジェクトを取得

func inject<T: Injectable>(_ injectableClass: T.Type) -> T { 
    let injectable = injectableClass as! Injectable 
    //More code that returns what is needed but this is the error spot 
} 

私は、依存性注入フレームワークを作成し、

var mColorManager: ColorManager { 
    return mAppModule.inject(ColorManager.self) 
} 

私は注入関数内やろうとしています何をしたいまで、この作品を以下のようにそれを使用したいのです。

これは私が

は 'Project.Injectable'

ColorManagerに型 'Project.ColorManager.Type'(0x610000244158)の値をキャストできませんでした取得エラーがInjectableです。

T.Typeから実際のクラスオブジェクトをキャストまたは取得するにはどうすればよいですか?

+0

あなたは 'T'型のオブジェクトを返すことを意味しますか? Btwあなたの現在のコードは文脈がなくても意味をなさない。 –

+0

はい私は不要な部分を除外しましたが、それを追加することができます。私は依存性注入フレームワークを作成していますが、問題の根は 'T.Type'や' Object.self'から 'Object' 'Object.self'だけを知っているからです。 – superuserdo

+0

基本的にオブジェクトの型を知るだけでオブジェクトを初期化したいのですか? –

答えて

0

init()をプロトコルに追加することでこれを解決しました。私はそう言えました

let realInjectableClass = injectableClass.init() 
関連する問題