1. ホーム
  2. c#

[解決済み】ある型が特定の汎用インターフェース型を実装しているかどうかを判断する方法

2022-04-01 10:45:41

質問

次のような型定義があるとする。

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}

という型があるかどうかを調べるにはどうしたらよいですか? Foo は、汎用インターフェース IBar<T> マングルドタイプしかないのに?

どのように解決するのですか?

TcKsの回答を利用すれば、以下のLINQクエリでも可能です。

bool isBar = foo.GetType().GetInterfaces().Any(x =>
  x.IsGenericType &&
  x.GetGenericTypeDefinition() == typeof(IBar<>));