1. ホーム
  2. c#

[解決済み] あるクラスが他のクラスをインスタンス化せずに継承しているかどうかを確認する方法は?重複

2022-04-25 18:44:26

質問

このようなクラスがあったとします。

class Derived : // some inheritance stuff here
{
}

私のコードでは、このようなことを確認したいのです。

Derived is SomeType;

しかし、次のように見えます。 is 演算子はDerivedをDerived型の変数にする必要があり、Derivedそのものではありません。 私はDerived型のオブジェクトを作りたくはないのです。

どうすれば、Derived が SomeType をインスタンス化することなく使用できますか?

P.S. 参考になるのであれば、以下のようなものが欲しいです。 where キーワードはジェネリックで行います。

EDITです。

に似ています。 これ の答えですが、これはオブジェクトをチェックしているのです。私はクラス自体をチェックしたいのです。

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

割り当て可能かどうかを確認するために Type.IsAssignableFrom というメソッドがあります。

typeof(SomeType).IsAssignableFrom(typeof(Derived))

これは、型クオリティ、継承関係、インターフェイスの実装については期待通りに動作しますが ではなく 明示的/暗黙的な変換演算子間の「割り当て可能性」を探している場合。

厳密な継承を確認するためには Type.IsSubclassOf :

typeof(Derived).IsSubclassOf(typeof(SomeType))