Задать вопрос
@S1ntel

Как вызвать переменную или метод другого класса через строку?

У меня есть множество классов (Страны) с одинаковыми названиями переменных. И есть другой класс который выводит информацию об этих классах. Сейчас пользуюсь таким методом: При вызове инфо класса страна передает ему свое имя через строку а в инфо классе уже делаю.
void Info(string Country){
if(Country == "Italy"){
Text.text = Italy.NameOfVariable;
} else if(Country == "Russia"){
Text.text = Russia.NameOfVariable;
}
}

Но так как классов много будет очень много лишнего кода, скажите как можно использовать универсальный метод чтобы брать переменную, если это возможно, может быть и не через строку.
  • Вопрос задан
  • 3048 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
ответьте почему у вас множество классов, а не один класс Country, на основе которого сделали себе объект для России и Италии и так далее?
у них у всех будет одинаковые переменные..
public class Country 
{
public string Name;
//и другие нужные поля под страну
}

///////////
//создаем себе объект класса
Country  russia = new Country();
russia.Name = "Russia";
//////////

//и вот собственно во все инфо и подобное отдаете объект класса Country 
//в котором все содержиться
void Info(Country currentCountry){

Text.text = currentCountry.Name;

}


конечно еще есть struct вместо класса. и про наследование можно поговорить если будет что то уникальное для каких-то стран.
но вам еще видимо рано такое..

но в общем то, если сильно все упростить, вы просто не использовали ООП - создав на каждую страну свой собственный класс.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
loktionov129
@loktionov129
Backend .NET Developer
using System;

public abstract class Country
{
	 public string NameOfVariable { get; set; }
	 
	 protected Country(string name) {
	 	NameOfVariable = name;
	 }
}

public class Russia : Country
{
	public Russia(string name) : base(name) {}
}

public class Italy : Country
{
	 public Italy(string name) : base(name) {}
}

public class Test
{
	public static void Main()
	{
		Info(new Russia("Hello From Russia"));
		Info(new Italy("me gusta!"));
	}
	
	public static void Info(Country country)
	{
		string text = country.NameOfVariable;
		Console.WriteLine(text);
	}
}


?


Hello From Russia
me gusta!
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы