создать члена с именем по строке - PullRequest
2 голосов
/ 06 сентября 2011

Очевидно, вы не можете создать члена класса, подобного этому

string name = "member-";
 for(int i=0;i<5;i++)
{
    classname name+i.toString() = new classname();
}

Я не понимаю, почему и есть ли хороший обходной путь?

Что если мне нужно создатьнесколько членов?

Ответы [ 4 ]

1 голос
/ 06 сентября 2011

Если все, что вам нужно, это создать 5 classname объектов и поддерживать их в порядке, простой Array сделает свое дело. Если вы не знаете, сколько хотите раньше, используйте вместо этого List<classname>.

classname[] myClasses = new classname[5];
for(int i = 0; i < myClasses.Length; i++)
{
    myClasses[i] = new classname();
}
1 голос
/ 06 сентября 2011

На самом деле, вы можете довольно близко подойти к ExpandoObject в C # 4.0, как показано ниже. Вот хорошая статья MSDN об их использовании.

string name = "member-";
dynamic classname = new ExpandoObject();
for(int i=0;i<5;i++) {
  dynamic newmember = new ExpandoObject();
  classname[name+i.toString()] = newmember;
}
1 голос
/ 06 сентября 2011

Это выглядит как идеальный случай для использования Dictionary<string, classname>:

var dictionary = new Dictionary<string, SomeClassName>();

var name = "member-";

for(int i = 0; i < 5; i++)
{
    dictionary[name+i.ToString()] = new SomeClassName();
}
0 голосов
/ 06 сентября 2011

Есть ли причина, по которой вы не используете отражение, чтобы получить список имен классов в сборке / сборках?

Вы можете выбрать между полностью определенным именем и простым именем. Затем вы можете соответствующим образом отформатировать строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...