以下の内容はhttps://hacchi-man.hatenablog.com/entry/2021/04/13/220000より取得しました。


【C#】継承した Generic クラスを確認する

GenericIntGeneric<T> を継承しているか確認するために、BaseType を見てみたところ

Generic1[System.Int32]` と表示され意図したクラスが取得できなかった

public abstract class Generic<T>{}

public class GenericInt : Generic<int>{}

private void Main()
{
    var instance = new GenericInt();
    var type = instance.GetType();
    Debug.Log(type.BaseType == typeof(Generic<>)); // false
    Debug.Log(type.BaseType); // Generic`1[System.Int32]
}

調べたところ、Generic クラス取得するには GetGenericTypeDefinition を利用する必要があった

そのため、先程の処理を下記のように書き換えると正しく Generic クラスの比較が行えた

private void Main()
{
    var instance = new GenericInt();
    var type = instance.GetType();
    var genericType = type.BaseType.GetGenericTypeDefinition();
    Debug.Log(genericType == typeof(Generic<>));
    Debug.LogWarning(genericType); // Generic`1[T]
}



以上の内容はhttps://hacchi-man.hatenablog.com/entry/2021/04/13/220000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14