1

私はこれが可能かどうかを理解しようとしています。

私はクラス BaseGameEntity を持っています。これから、それぞれに StateMachine< T > のインスタンスを持つ NormalDrop と OtherDrop を派生させています。ここで、T はそれぞれ NormalDrop と OtherDrop です。

ここから、これらの種類のドロップに適用される関連する状態を呼び出すことができます。

私がやりたいのは、別のレイヤーを Drop クラスに入れることです。このクラスは BaseGameEntity から派生し、他の形式のドロップが派生します。

Drop 内では、StateMachine< T > が必要です。ここで、"T" は、それを基本クラスとして使用しているものに応じて、NormalDrop または OtherDrop になります。

これは実際に可能ですか?

4

1 に答える 1

1

はい、不思議なことに繰り返されるテンプレート パターンを使用できます。

public class Drop<T> where T : Drop<T> { ... }
public class NormalDrop : Drop<NormalDrop> { ... }
public class OtherDrop : Drop<OtherDrop> { ... }

次に、Drop 基底クラス T 内には、常に NormalDrop または OtherDrop があります。

このパターンは一般的に開発者にとって使いやすいとは見なされません。一見すると混乱を招き、コードを構造化するためのより良い方法がおそらく存在するからです (常にではありませんが)。Eric Lippert は、このパターンとその欠点について、非常に優れたブログ記事をここに書いています。

于 2012-07-02T21:53:05.813 に答える