0

さて、私は int 型と Tile 型の辞書を持っています。特定のタイルの新しいインスタンスを返すように設計している TileManager というクラスがあります。今、これは私が持っているものです。

public class TileManager
{
    private Dictionary<int, Tile> _registeredTiles = new Dictionary<int, Tile>();

    public Tile GetNewTile(int id)
    {
        // Here, I need to return a new instance of the tile at the given key. I want
        // something like this: return new _registeredTiles[id].GetType();
    }
    . . .
}

問題は、タイル以外のさまざまなクラスを保持するため (Tile の子を保持することになる)、新しい Tile クラスを作成できないことです。

4

1 に答える 1

1

最も簡単な解決策は、使用することですActivator.CreateInstance();

必要に応じて、型とコンストラクター引数の配列を渡すことができます。

return (Tile)Activator.CreateInstance(_registeredTiles[i].GetType());
于 2013-09-22T23:19:21.630 に答える