パラメータとしてジェネリッククラスを受け取る

JoséJoãoDeOliveiraJúnior

ジェネリッククラスは初めてです。私は今ゲームを作っています。私には多くの敵がいますが、それらはすべて一般的なEnemyBaseクラスから継承しています

public abstract class EnemyBase<TState, TTransition>
{
     protected StateMachine<TState, TTransition> m_FSM;
}

例として、私はこのようなものを持っているでしょう:

public class EnemySquire : EnemyBase<EnemySquire.State, EnemySquire.StateTransition>
{
    public enum State
    {
        IDLE,
        WALK,
        ATTACKED,
        DEAD,
    }

    public enum StateTransition
    {
        FOUND_FREE_GRID,
        FINISHED,
        FREED,
        OUT_OF_LIFE,
        ATTACKED,
    }
}

ここまでは順調ですね。私の問題は、EnemyBaseクラスをパラメーターとして受け取ることです。ジェネリックに関係なく、あらゆる種類のEnemyBaseを受け取りたいです。そう:

public class Player
{
   public void Attack<TState, TTransition>()
   {
        EnemyBase<TState,TTransition> enemy = GetComponent<EnemyBase<TState,TTransition>>();
   }
}

これは機能しますが、Attackメソッドは別のメソッド内で呼び出されるため、この別のメソッドも実装する必要があり<TState, TTransition>、この別のメソッドは別のメソッドによって呼び出されます...そして続行します。

私は次のようなことを達成したいと思います:

public void Attack()
{
     EnemyBase enemy = GetComponent<EnemyBase>();
}

または

public void Attack()
{
     EnemyBase<,> enemy = GetComponent<EnemyBase<,>>();
}

これらの構文が正しいかどうか、または存在するかどうかはわかりませんが、ジェネリックに関係なく、クラスがEnemyBaseであるかどうかを知りたいだけです。

ありがとう

編集:どのジェネリックタイプが使用されるかを追加しました

SilentSin

のようなバインドされていないジェネリック型のフィールドを持つことはできませんEnemyBase<,>

のようなジェネリックなものの非ジェネリックな基本クラスEnemyBase<TState, TTransition> : EnemyBaseまたはのようなインターフェースのいずれかを定義する必要がありますEnemyBase<TState, TTransition> : IEnemy

次に、EnemyBaseまたはIEnemyフィールドを持つことができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

任意のオブジェクトの配列をパラメータとして受け取るジェネリック関数

分類Dev

Rustのパラメーターとして反復可能なコンテナーを受け取るジェネリック関数の記述

分類Dev

抽象クラスから派生したオブジェクトをメソッドのパラメーターとして受け取る

分類Dev

派生演算子<パラメータとしてベースオブジェクトを受け取る

分類Dev

C#で、ジェネリックパラメーターFunc <T、TResult>をパラメーターとして持つラムダを受け取る拡張メソッドを作成するにはどうすればよいですか。

分類Dev

ジェネリックインターフェイスは、パラメーターとして自分自身を受け取ります。再帰的なジェネリック?

分類Dev

異なるジェネリック型のパラメーターを受け取るジェネリッククラスにメソッドを含めることができないのはなぜですか?

分類Dev

メソッドのパラメーターとしてジェネリッククラスを使用する

分類Dev

ジェネリック関数をパラメーターとして受け取るジェネリックプロトコルのSwift4拡張関数

分類Dev

デリゲートをパラメーターとして受け取るコンストラクター

分類Dev

オブジェクトをパラメータとして受け取るDLL関数を使用するJNIJava

分類Dev

ジェネリッククラスをパラメーターとしてswiftで宣言するジェネリッククラス

分類Dev

「ジェネリック」列挙型をパラメータとして受け取り、実行時に diff 列挙型にキャストするメソッド

分類Dev

任意のオブジェクトをパラメータとして受け取る関数

分類Dev

ジェネリックをパラメーターとして使用して、後で特定のメソッドを適用する関数を受け取るにはどうすればよいですか?

分類Dev

ジェネリッククラスを型パラメーターの上限として使用する

分類Dev

オブジェクト型をパラメーターとして受け取るコンストラクターを使用した静的メソッドでの非静的クラス(コンテキスト)のインスタンス化

分類Dev

構造体をパラメータとして取るジェネリック関数?

分類Dev

ジェネリックスを使用してパラメーターとしてクラスを渡す

分類Dev

ジェネリックパラメータとしての匿名クラス

分類Dev

ジェネリックパラメータとしての匿名クラス

分類Dev

パラメータが何であるかを知らずに(または気にせずに)ジェネリックパラメータを受け取るインスタンスの配列を持つことは可能ですか?

分類Dev

メソッドパラメータJavaとしてジェネリックスを使用する

分類Dev

C#メソッドパラメータとしてジェネリッククラスを渡す

分類Dev

オブジェクトクラスメソッドがクラスのインスタンスをパラメータとして受け取るのはなぜですか

分類Dev

コンストラクターKotlinのパラメーターとしてジェネリックを使用

分類Dev

オブジェクトをパラメータとして受け取るJavaでのメソッドの実装

分類Dev

カスタムオブジェクトタイプをパラメータとして受け取るJDBCIOCalling Postgres Routine(Stored Proc)

分類Dev

C#の型パラメーターとしてジェネリッククラスにネストされたクラスを使用する

Related 関連記事

  1. 1

    任意のオブジェクトの配列をパラメータとして受け取るジェネリック関数

  2. 2

    Rustのパラメーターとして反復可能なコンテナーを受け取るジェネリック関数の記述

  3. 3

    抽象クラスから派生したオブジェクトをメソッドのパラメーターとして受け取る

  4. 4

    派生演算子<パラメータとしてベースオブジェクトを受け取る

  5. 5

    C#で、ジェネリックパラメーターFunc <T、TResult>をパラメーターとして持つラムダを受け取る拡張メソッドを作成するにはどうすればよいですか。

  6. 6

    ジェネリックインターフェイスは、パラメーターとして自分自身を受け取ります。再帰的なジェネリック?

  7. 7

    異なるジェネリック型のパラメーターを受け取るジェネリッククラスにメソッドを含めることができないのはなぜですか?

  8. 8

    メソッドのパラメーターとしてジェネリッククラスを使用する

  9. 9

    ジェネリック関数をパラメーターとして受け取るジェネリックプロトコルのSwift4拡張関数

  10. 10

    デリゲートをパラメーターとして受け取るコンストラクター

  11. 11

    オブジェクトをパラメータとして受け取るDLL関数を使用するJNIJava

  12. 12

    ジェネリッククラスをパラメーターとしてswiftで宣言するジェネリッククラス

  13. 13

    「ジェネリック」列挙型をパラメータとして受け取り、実行時に diff 列挙型にキャストするメソッド

  14. 14

    任意のオブジェクトをパラメータとして受け取る関数

  15. 15

    ジェネリックをパラメーターとして使用して、後で特定のメソッドを適用する関数を受け取るにはどうすればよいですか?

  16. 16

    ジェネリッククラスを型パラメーターの上限として使用する

  17. 17

    オブジェクト型をパラメーターとして受け取るコンストラクターを使用した静的メソッドでの非静的クラス(コンテキスト)のインスタンス化

  18. 18

    構造体をパラメータとして取るジェネリック関数?

  19. 19

    ジェネリックスを使用してパラメーターとしてクラスを渡す

  20. 20

    ジェネリックパラメータとしての匿名クラス

  21. 21

    ジェネリックパラメータとしての匿名クラス

  22. 22

    パラメータが何であるかを知らずに(または気にせずに)ジェネリックパラメータを受け取るインスタンスの配列を持つことは可能ですか?

  23. 23

    メソッドパラメータJavaとしてジェネリックスを使用する

  24. 24

    C#メソッドパラメータとしてジェネリッククラスを渡す

  25. 25

    オブジェクトクラスメソッドがクラスのインスタンスをパラメータとして受け取るのはなぜですか

  26. 26

    コンストラクターKotlinのパラメーターとしてジェネリックを使用

  27. 27

    オブジェクトをパラメータとして受け取るJavaでのメソッドの実装

  28. 28

    カスタムオブジェクトタイプをパラメータとして受け取るJDBCIOCalling Postgres Routine(Stored Proc)

  29. 29

    C#の型パラメーターとしてジェネリッククラスにネストされたクラスを使用する

ホットタグ

アーカイブ