0

私は次のようなものを持っています:

// This part is fine
abstract class Attack {}

abstract class Unit<A> where A : Attack {}

class InstantAttack : Attack {}
class Infantry : Unit<InstantAttack> {}

// I'm lost here, on this part's syntax:
abstract class Controller<U> where U : Unit {}
// I want the above class to take any kind of Unit, but Unit is a generic class!

上記は、では機能しません。これは、ジェネリックパラメータ(など)が必要なため、正しくないControllerためです。私は試した:where U : UnitUnitUnit<InstantAttack>

abstract class Controller<U<A>> where U<A> : Unit<A> {}

それは確かに機能しませんでした。これを行うための正しい構文は何ですか?

4

1 に答える 1

2

このように:

abstract class Controller<U, A> where U : Unit<A> {}

またはこのように:

interface IUnit { }
abstract class Unit<A> : IUnit where A : Attack { }
abstract class Controller<U> where U : IUnit { }
于 2013-02-17T16:59:35.050 に答える