Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
onmqueen
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 3
#1

Создание экземпляра класса на основании введенной с клавиатуры строки - C#

11.11.2010, 22:50. Просмотров 1724. Ответов 5
Метки нет (Все метки)

у меня есть 4 класса BaseFigure(абстрактный класс его наследуют все остальные), Line, Rectangle, Triangle.
Хочу, чтобы в главной программе с клавиатуры вводилось имя класса, и на основании введенной строки создавался экземпляр одного из 3 классов(Line, Rectangle, Triangle), но при этом нельзя использовать что-то типо:

C#
1
2
3
4
5
6
string name=Console.ReadLine();
if (name=="Line")
{
Line a;
}
else...
дабы кол-во классов может увеличиваться и данный метод придется постоянно редактировать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 22:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание экземпляра класса на основании введенной с клавиатуры строки (C#):

Создание экземпляра класса из текстовой строки
Доброго времени суток, появилась проблема, подскажите, как решается. Допустим...

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new...

Создание экземпляра класса
Как написать класс class Class1 Class1(int x1,int x2) { ...

Создание экземпляра класса
Народ, можете пожалуйста доходчиво объяснить в чем разница. есть, например,...

Динамическое создание экземпляра класса.
Есть программа. Как сделать что-бы пользователь вводил имя, а затем создавался...

Динамическое создание экземпляра класса
Подскажите начинаюшему! Есть FileUpload, с помощью него я хочу отправить файл...

5
Algol36
51 / 49 / 7
Регистрация: 09.11.2010
Сообщений: 93
11.11.2010, 23:00 #2
дабы кол-во классов может увеличиваться и данный метод придется постоянно редактировать.
На самом деле изменение кода - это нормально. На все случаи жизни кода не бывает. Особенно это касается пользовательского интерфейса.
Но если уж так хотите, то вот:
C#
1
object obj = Activator.CreateInstance(Assembly.GetCallingAssembly().FullName, className);
1
NickoTin
Почетный модератор
Эксперт .NET
8435 / 3557 / 402
Регистрация: 14.06.2010
Сообщений: 4,512
Записей в блоге: 9
11.11.2010, 23:15 #3
Можно ещё так создать экземпляр класса:
C#
1
object obj = Type.GetType(className).GetConstructor(new Type[0]).Invoke(null);
1
onmqueen
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 3
12.11.2010, 00:08  [ТС] #4
ух ты, как быстро)сейчас попробую и отпишусь

Добавлено через 42 минуты
хм...объект obj создался, за это вам огромное спасибо!
но теперь возникла еще одна проблема:
мне теперь необходимо этот obj добавить в список:

C#
1
static List<BaseFigure> figures = new List<BaseFigure>();
Что компилтор не дает делать, так как не знает, что после создания obj становиться наследником класса BaseFigure
0
NickoTin
Почетный модератор
Эксперт .NET
8435 / 3557 / 402
Регистрация: 14.06.2010
Сообщений: 4,512
Записей в блоге: 9
12.11.2010, 00:13 #5
Приведите object к BaseFigure.
C#
1
2
3
4
BaseFigure bf = (BaseFigure)<создание_экземпляра>;
figures.Add(bf);
// или:
figures.Add((BaseFigure)<создание_экземпляра>);
Так же можно воспользоваться операторами as и\или is для приведения.
1
onmqueen
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 3
12.11.2010, 00:15  [ТС] #6
огромнейшее спасибо!вы мне сэкономили массу времени!!!!
0
12.11.2010, 00:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2010, 00:15
Привет! Вот еще темы с решениями:

Создание экземпляра класса выдает ошибку
Учил по учебнику СИ Шарп так вот в начале были экземпляры класса делал по...

Объясните, пожалуйста, создание экземпляра класса в примере
Добрый день, имеем пример кода: using System; // Абстрактный класс может...

Создание экземпляра класса без ключевого слова new
Получается можно создавать экземпляр класса без ключевого слова new как ниже в...

Передача имени класса и создание экземпляра соответствующего объекта
Добрый день! В моем приложении часто используется код: if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru