オープンジェネリック型のためのvaiableを宣言する方法はありますか?オープンジェネリック型の変数の宣言方法は?可能?
Given:ユーザーがファクトリメソッドから取得するジェネリッククラスのLoggerがあります。任意のロガーを保持できる変数を持つ方法はありますか?
現在、Loggerは、Logger ONLYを継承しています。これは、どのタイプがそこに記録されているかを気にせずにインスタンスの変数を宣言できるためです。
私はMEFを使用していますが、エクスポートでは[エクスポート(typeof(Logger <>)]]という構文を使用して一般的なタイプをエクスポートできます...(インポート時に正確なタイプを指定する)オープンタイプ(少なくともtypeof)では私が今必要とするのは、構文です。
Logger <> Logger {get;セット; }
何か可能性はありますか?この特定の構文は、私に "タイプが必要"となります。
なぜ「オブジェクト」を使用しないのですか? –
@Lasse: 'myObject.Log(something)'がコンパイルエラーを起こす(変数が*参照のみを格納するために使用されていない)ためだと思います。 'dynamic'はオプションになりますが、コンパイル時の構文チェックは失われます。 – Heinzi
それはまさに事です。私はタイプXのロガー(設定用)のロギングサービスに頼んでいますが、特定のジェネリックタイプへのロギングには興味がありません。すべてのものはベースの一部です。私はときどきロガーを(サブクラスなど)渡すかもしれません。彼らは知る必要はありません。私は基本クラスを持つために(ここと他のシナリオで)JUSTを避けようとしています。 – TomTom