2016-05-12 3 views
0

私はこのように、Botというクラスがあるとします。特定の型の場合にのみクラスを継承する方法は?

class Bot 
{ 

} 

Botのすべての機能を持つ別のクラスがあり、このクラスはToolと呼ばれている:今

class Tool 
{ 
    //some method 
} 

BotToolのメソッドを継承しなければならない唯一のクラスです。 whereのようにこれをどのように制約できますか?このような何か:

class Tool where T = Bot ? 

クリアされている場合、私は知りませんが、私は唯一のBotクラスがToolの方法を継承することができることをしたい、これを行うことができますか?根本的な説明のために申し訳ありません。

ありがとうございます。

+1

あなたの意図がはっきりしません。 ToolクラスがBotクラスから継承でき、他のクラスを継承できないようにしたいだけですか?もしそうなら、これを行うことはできません。 –

+0

特定の他のクラスだけが継承できるクラスを構築しようとしていますが、他のクラスはそれを使用できますか? –

+0

@MattiasÅslund正確には、私は 'where'演算子を学んでいますので、このようなターゲットが可能かどうかを知りたいと思います。 – IlDrugo

答えて

6

これは不可能でもありません。

1つのクラスだけを継承する場合は、それらを1つのクラスにまとめてみましょう。また、親クラスからのみ作成可能なネストされたクラスを作成することもできます。次に、派生クラスではなく、Toolをプロパティとして追加します。

+0

面白いヒントですが、この場合はコードファイルが長すぎますか、さらにファイルを分けることができますか? – IlDrugo

+1

はい、それには 'partial'キーワードを使います。 ([部分クラス](https://msdn.microsoft.com/en-us/library/wa80x488.aspx?f=255&MSPPError=-2147217396)で読む) –

+0

これは、ありがとう:) – IlDrugo

1

あなたはそうすることはできません。 Toolを封印したいので、それを継承することはできませんが、Botには「has-a」の関係があります(「is-a」関係ではありません)。

つまり、Botその中にToolのインスタンスがカプセル化されていて、継承されていないはずです。

関連する問題