C# -- Genericクラスの抽象化

Object obj = new System.Collections.Generic.Dictionary();
Assert.IsTrue(obj is System.Collections.IDictionary);

って、そういうことか。
抽象的に扱いたい場合(フレームワーク内部など)は、
Genericじゃない方で扱えってことか...

でも、...ってことは、自分でGenericクラスを作ったときに、
もし、そのクラスを抽象的に扱いたい場合は、NonGenericなインターフェースも
一緒に作って実装してあげないとダメなんじゃないんでしょうか!?
そはれすごーく面倒です。でも今それしか抜け道が見当たらない。

C#のGenericは実行時もその情報が残ってて、実行時チェックを行うのですが、
それが「堅すぎて」逆にやりづらい部分が出てきている感じがします。