C#でインターフェースから本体のクラスの参照を得る方法ないですか

[code]

    class Derived : Base, IInterface1, IInterface2 {
    }
    
[/code]

みたいなクラスが定義されている時に IInterface1 の参照から Derived の参照を得る方法はないでしょうか。




「参照」が何を指すかはっきりしませんが、

[code]

    IInterface1 obj;
    
[/code]

のようなインターフェイスの型を持つインスタンス参照がある場合、`Derived`型の変数は

[code]

    Derived d = (Derived)obj;
    
[/code]

のように得られます。

また動的に型情報が欲しい場合は`obj.GetType()`の結果を参照します。

`Type`から`Type`を得たい場合は

[code]

    AppDomain.CurrentDomain
             .GetAssemblies()
             .SelectMany(a => a.GetTypes())
             .Where(t => typeof(IInterface1).IsAssignableFrom(t))
    
[/code]

のように`Assembly.GetTypes`から検索できます。

