1. ホーム
  2. c#

[解決済み] あるインタフェースを実装しているすべての型を取得する

2022-03-16 04:27:50

質問

リフレクションを使って、C# 3.0/.NET 3.5でインターフェースを実装するすべての型を最小のコードで取得し、反復を最小にするにはどうすればよいですか。

これを書き直したいのです。

foreach (Type t in this.GetType().Assembly.GetTypes())
    if (t is IMyInterface)
        ; //do stuff

解決方法は?

私のはc#3.0ではこうなります :)

var type = typeof(IMyInterface);
var types = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(s => s.GetTypes())
    .Where(p => type.IsAssignableFrom(p));

基本的に、最小の反復は常になります。

loop assemblies  
 loop types  
  see if implemented.