2010-08-11 107 views
1

我想知道如何选择在程序运行时创建的对象。 每个对象都有其唯一的名称。我怎么能通过它的名字选择那个对象?按名称查找对象

实例名称:

“mapPart_0_0”
“mapPart_0_1”
“mapPart_0_2”

这是一个Windows窗体项目。在C#中。

这些对象的创建:

private void addBoxes() 
    { 
     for (int a = 0; a < 25; a++) 
     { 
      for (int b = 0; b < 10; b++) 
      { 
       MyCustomPictureBox box = new MyCustomPictureBox(); 
       box.Location = new Point(b * 23 + 5, a * 23 + 5); 
       box.Image = new System.Drawing.Bitmap("tiles/0.png"); 
       box.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
       box.Size = new Size(24, 24); 
       box.Name = "mapPart_" + a + "_" + b; 
       box.Click += new EventHandler(boxClickAdd); 
       box.oFile = "0"; 
       panel1.Controls.Add(box); 
      } 
     } 
    } 
+0

你可以发表如何创建这些对象的示例代码? – Oded 2010-08-11 07:41:01

回答

5

我建议干脆把对象在System.Collections.Generic.Dictionary<string, your object type>列表。如果我正确理解问题,它提供了您正在寻求的确切功能。

+0

我同意Mathias。只需将动态创建的对象添加到Dictionary中即可。 您可以使用Reflection,但这可能会导致不可接受的运行时损失(并且C#中的反射可能很冗长)。 – 2010-08-11 07:50:06