Как задать имя экземпляра класса C# из переменной?

Добрый день,
как бы Вы решили задачу установки имени переменной, которая ссылается на экземпляра класса "Футбольная команда" в соответствии с Именем команды введенным пользователем в командной строке?

То есть в процессе выполнения IL кода создается экземляр класса:
FootballTeam Team1 = new FootballTeam();
Как вместо Team1 указывать имя ссылки полученное от пользователя?
Например пользователь указал название новой команды "Manchester", я хочу чтобы ссылка на экземпляр класса также имела название "Manchester" а не Team1. Как это сделать?

Ниже код просто для описания входящих условий задачи, это - не решение.

public string Name;
void Main()
{
	Console.WriteLine("Ввведите имя команды");
	Name = Console.ReadLine();
	FootballTeam Team1 = new FootballTeam();
	Team1.TeamNameProp = Name;
	Console.WriteLine("Вы создали новую команду: {0}",Team1.TeamNameProp);
}

public class FootballTeam
{
	private string TeamName;
	public string TeamNameProp
	{
		get
		{
			return TeamName;
		}
		set
		{
			TeamName = value;
		}	
	}	
}
  • Вопрос задан
  • 2808 просмотров
Решения вопроса 2
AxisPod
@AxisPod
Ну вообще я так понимаю, что здесь требуется сгенерировать IL-код в рантайме. А ваше решение вообще не отражает суть задачи. Вы поменяли свойство экземпляра, а никак не имя экземпляра. С другой стороны вопрос так поставлен, что сложно понять что на деле хотят, что такое имя экземпляра класса. Это для каждой команды своё имя класса, чтобы через рефлексию можно было его получить или это имя переменной хранящей ссылку на экземпляр класса команды.

Ну уж а если вы хотите сделать именно то, что отражено в коде. Так делается это проще
FootballTeam Team1 = new FootballTeam { TeamNameProp = Name };
Ответ написан
Neuroware
@Neuroware
Программист в свободное от работы время
не понятно в чем тут сложность, но раз уж пошла такая пляска можно вообще ему имя не задавать, а завести KeyValuePair(TKey, TValue) где ключем будет имя вашей новой команды а в value голый класс с его содержимым, тогда можно будет обращаться к классу примерно так mvparray[nameofteam].value
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы