共分散を中心に展開するこれに対する簡単な答えがあると確信していますが、私はそれを見るのに苦労しています!
私は次のようなクラスを持っています:
internal sealed class GenericCallbackClass<T> : SomeBaseClass
where T : ICallbackMessageBase
{
public GenericCallbackClass(string activeId, T message)
: base(activeId)
{
Message = message;
}
public T Message { get; private set; }
}
次に、Foo という名前の ICallbackMessageBase を実装するクラスのインスタンスを作成し、これを T の引数として渡す新しい GenericCallbackClass をインスタンス化します。var myCallback = new GenericCallback<Foo>("SomeID", new Foo())
これを GenericCallbackClass のより一般的なインスタンスにキャストしたいと考えています。これは、Foo、Bar などでこれの多くのインスタンスがあり、すべて ICallbackMessageBase を実装しているためです。
だから私は何かをしたいvar callback = myCallback as GenericCallbackClass<ICallbackMessageBase>
このキャストを実行できないようです...これを回避する方法はありますか?