Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
63 / 62 / 11
Регистрация: 28.12.2011
Сообщений: 280
1

Создать объект тип которого не известен за ранее

10.05.2014, 18:59. Показов 849. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Помогите решить проблему, мне нужно в атрибуте указать тип объекта, а потом создать его экземпляр во время выполнения. Создал пример и упростил его на сколько мог.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Reflection;
 
namespace Atribut
{
    class Program
    {
        static void Main(string[] args)
        {
           A a = new A();
           DataAtibute da =  a.GetType().GetCustomAttribute<DataAtibute>();
           Console.WriteLine(da.t.Name); // вывод: B
           Console.ReadKey();
           //теперь нужно создать экземпляр класса B
           // учитывая то что мы не знаем заранее что это B
           // но знаем что класс унаследован от С
           //затем вызвать  void Method(C c)
        }
 
        void Method(C c){}
    }
 
    [DataAtibute( t = typeof(B))]
    public class A
    {
    }
    public class C { }
    public class B : C  {}
    public class DataAtibute : Attribute
    {
       public Type t;
    }
}
помогите решить проблему плиз, несколько часов ломаю голову.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2014, 18:59
Ответы с готовыми решениями:

Как создать объект, который будет известен только в рантайме?
var myvar:pic = new pic(); вот обычное объявление создающее экземпляр библиотеки pic а как...

Как создать объект оператором new, если имеется только тип указателя на объект, переданный через шаблон?
Есть шаблон. Точно известно, что его параметр Т это указатель. Как с помощью new создать переменную...

Как сравнить некоторый объект вектора тип данных которого является структурой ?
Сама структура struct coordinate { int h; int w; }; Вектор этой структуры vector...

Создать обЪект класса , у которого в параметрах конструктора объект этого же класса
Вот код: TOgmGraphicsClass = class of TOgmGraphicsBlock; TOgmGraphicsBlock =...

2
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.05.2014, 19:32 2
Good1101,
C#
1
var b = Activator.CreateInstance(da.t);
Добавлено через 45 секунд
2) заранее пишется слитно.
1
63 / 62 / 11
Регистрация: 28.12.2011
Сообщений: 280
10.05.2014, 20:46  [ТС] 3
Psilon, Спасибо, а я уже через ConstructorInfo хотел сделать. Ваш способ удобнее, буду знать.
0
10.05.2014, 20:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2014, 20:46
Помогаю со студенческими работами здесь

В C# создать объект, класс которого написан в C++
Надеюсь в правильную ветку пишу. Как можно получить из C# создать объект который написан в C++? К...

Создать объект, класс которого указан в строке
Привет всем. Уже давно ищу решение ниже изложенного вопроса и все никак. Задавал вопросы на других...

Как вручную создать массив, тип которого является структурой
подскажите пожалуйста, как вручную создать массив (ну т.е. не заполнять его через цикл) тип...

Динамически создать экземпляр объекта, тип которого передан функции
Здравствуйте, дорогие коллеги. Прошу вашей компетентной помощи, может быть кто-то сталкивался с...

Можно ли создать объект некоторого типа, если тип хранится в переменной
Здравствуйте! Подскажите, пожалуйста, могу ли я в С# создать объект, если тип объекта храниться в...

Создать объект, который мог бы принимать в себя любой тип данных
Object ten = 10; Object str = &quot;string&quot;; Такая запись обязательна. То есть тип данных должен быть...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru