
[code]

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

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


CC BY-SA 3.0
2016-08-30T02:01:30.853
28573
2016-08-30T02:11:01.877
18645
question
c#
C#でインターフェースから本体のクラスの参照を得る方法ないですか


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

[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`から検索できます。


CC BY-SA 3.0
2016-08-30T02:11:01.877
28575
2016-08-30T02:11:01.877
5750
28573
answer