私は検索して検索しましたが、正直言って、何を探すべきか分かりません。 私はこの抽象基本クラスをItemとしています。基本クラスにメソッドSplit(double amount)
を使用する必要がある多くのサブクラスがあります。私は、そのメソッドが、サブクラスがそれをどのように呼び出すのか何とか知り、そのタイプの新しいオブジェクトをインスタンス化できるようにしたい。 これは私の奇妙なゲームですが、私はこの具体的な方法が2つにアイテムのスタックを分割する必要があります...メソッドを呼び出すサブクラスに応じて新しいサブクラスオブジェクトをインスタンス化する基本クラスメソッドを作成する
!!!サブクラスがアイテムタイプとそのアイテムタイプの数量を表現するにもかかわらず、基本クラスはItem
と呼ばれます。
これは私がこれまで持っているものです:
public abstract class Item
{
public double Quantity { get; private set; }
public Item()
{
Quantity = 1;
}
public Item(double quantity)
{
Quantity = quantity;
}
public bool Merge(Item item)
{
if (item.GetType() == GetType())
{
Quantity += item.Quantity;
return true;
}
return false;
}
public Item Split(double amount, Type häst)
{
Quantity -= amount;
//Here I'd like to do something like "new the-type-that-called-this-method()"
}
}
は、私は、基本クラスで抽象メソッドを使用して、すべてのサブクラスでそれをオーバーライドすることができることを知っているが、その後、私は再する必要があると思います - 基本的にまったく同じコードを書いて何度か分からない...もっと良い方法が見つからない場合、これが私のやり方だと思います...
ご存知の場合は他の提案や、これを整理する私のやり方が馬鹿だと思うならば、私に言い聞かせないでください。私はこのようなことは一度もしていませんし、単純なことを複雑にする傾向があり、 eason ...
もっと良い説明??? たとえば、スタックが200 IronOre
(IronOre : Item
としましょう。このインスタンスはmyIronPile
に格納されています)の場合、70 IronOre
を取得して、新しい「スタック」に入れたいと思います。したがって、myOtherIronPile = myIronPile.Split(70)
に電話したいと思います。これにより、myIronPile
から70が削除され、新しいIronOre
インスタンスに格納され、myOtherIronPile
に格納されます。
どのようなヘルプも大いに魅力的です!ありがとう! :D
私はたぶんキーワードが助けになると理解したように –