あなたが何を求めているのかよくわかりません。
レジストリ ベースから派生するクラスでのみ使用されるインターフェイス (および実装) を見つけたい:次のクエリは、から派生する任意の型で使用されるアプリケーション インターフェイスとクラスに一致しますMicrosoft.Win32.Registry
。
let registryDerived = Application.Types.Where(t => t.DeriveFrom("Microsoft.Win32.Registry"))
from t in Application.Types.UsedByAny(registryDerived)
select t
..そして次のクエリでは、前のクエリで一致したインターフェイスの派生型と実装も取得します。
let registryDerived = Application.Types.Where(t => t.DeriveFrom("Microsoft.Win32.Registry"))
from t in Application.Types.UsedByAny(registryDerived)
let tDerived = t.DerivedTypes
let tImpl = t.TypesThatImplementMe
select new { t, tDerived, tImpl }
... またはそれらすべてを一覧表示するには:
let registryDerived = Application.Types.Where(t => t.DeriveFrom("Microsoft.Win32.Registry"))
let tUsed = Application.Types.UsedByAny(registryDerived)
let tDerived = tUsed.SelectMany(t => t.DerivedTypes)
let tImpl = tUsed.SelectMany(t => t.TypesThatImplementMe)
from t in tUsed.Union(tDerived).Union(tImpl)
select t
ところで、Microsoft.Win32.Registry
封印されているので、あなたが話しているクラスではありません。ただし、名前空間を前に付けた独自のクラス名に置き換えることができます。