Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

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

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

11.11.2010, 22:50. Просмотров 1550. Ответов 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#):

Создание экземпляра класса-наследника для переменной с типом базового класса - C#
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); Вопрос: BC - это экземпляр класса BaseClass...

Создание экземпляра класса - C#
Как написать класс class Class1 Class1(int x1,int x2) { ........ } так чтобы при вызове

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

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

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

.NET 4.x Создание экземпляра класса выдает ошибку - C#
Учил по учебнику СИ Шарп так вот в начале были экземпляры класса делал по образцу не выходит , подскажите как их делать в последней...

5
Algol36
49 / 47 / 1
Регистрация: 09.11.2010
Сообщений: 93
11.11.2010, 23:00 #2
дабы кол-во классов может увеличиваться и данный метод придется постоянно редактировать.
На самом деле изменение кода - это нормально. На все случаи жизни кода не бывает. Особенно это касается пользовательского интерфейса.
Но если уж так хотите, то вот:
C#
1
object obj = Activator.CreateInstance(Assembly.GetCallingAssembly().FullName, className);
1
NickoTin
Почетный модератор
Эксперт .NET
8246 / 3528 / 239
Регистрация: 14.06.2010
Сообщений: 4,510
Записей в блоге: 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
8246 / 3528 / 239
Регистрация: 14.06.2010
Сообщений: 4,510
Записей в блоге: 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
Привет! Вот еще темы с ответами:

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

Создание экземпляра класса без ключевого слова new - C#
Получается можно создавать экземпляр класса без ключевого слова new как ниже в примере? Lamborgini lambo = new Lamborgini(); ...

Есть ли в C# механизм, позволяющий запретить создание экземпляра класса - C#
Всем привет! Есть ли в C# механизм, позволяющий запретить создание экземпляра класса? Как в C++ например чистая виртуальная функция?

.NET 4.x Создание экземпляра класса, получая значение его полей из словаря - C#
всем здравствуйте. возникла необходимость создания неких классов, даже не знаю как правильнее описать... есть класс с набором полей,...


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

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

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