実現したいこと
・ジェネリックなメソッドで、指定した型が渡された際に別のジェネリックメソッドを呼びたい
前提
実行する際に型を指定するメソッドがあります。
その型が条件を満たしている時のみ、別のジェネリックメソッドを呼びたいです。
以下のコードの説明
MethodClass.Mehod<T>()を呼んだ際に、TがBaseClassを継承しているときだけGenericMethod<T>()を呼ぶ
・MethodClass.Method<TestClassA>() =>GenericMethod<T>()を実行する
・MethodClass.Method<TestClassB>() =>GenericMethod<T>()を実行しない
ソースコード
C#
1public abstract class BaseClass { } 2public class TestClassA : BaseClass { } 3public class TestClassB { } 4 5public static class MethodClass 6{ 7 public static void Method<T>() 8 { 9 //ここで、TがBaseClassを継承しているならGenericMethod<T>()を呼びたい 10 } 11 12 static void GenericMethod<T>() where T : BaseClass 13 { 14 } 15}
呼び出し側ソースコード
C#
1public class CallClass : MonoBehaviour 2{ 3 private void Start() 4 { 5 MethodClass.Method<TestClassA>(); 6 MethodClass.Method<TestClassB>(); 7 } 8}
試したこと
以下のようにTがBaseClassを継承しているかは判定できます。
ただ、そこからどのようにGenericMethod<T>()を呼ぶのかが不明です。
(TがBaseClassを継承していることを、if文内で保証できない)
C#
1public class CallClass : MonoBehaviour 2{ 3 public static void Method<T>() 4 { 5 if(typeof(T).IsSubclassOf(typeof(BaseClass))) 6 { 7 //ここでGenericMethodを呼びたい 8 } 9 } 10}
追記
一度自己解決として質問を閉じましたが、解決策とした方法では問題があったため再度回答受付中に変更しました。
解決策とした方法では、GenericMethod内でTの型を利用できないため問題が生じました。
回答2件
あなたの回答
tips
プレビュー