Как я могу динамично вызвать конструктора в C#?

Это ссылка.

`int a;   //variable
int @a;  //reference
int *a;  //pointer`

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

Пример правильного объявления: int &a=b; теперь, чтобы использовать его, вы просто пишете a . И когда вы измените a, то же самое изменение произойдет с b

5
задан phyllis diller 17 March 2009 в 20:19
поделиться

2 ответа

Для класса для участия в этой схеме я отметил бы его с пользовательским атрибутом, который дает ему "имя XML".

Затем используйте отражение для нахождения весь Types отмеченный с тем атрибутом и помещенный их в a Dictionary<string, Type>. В этой точке необходимо решить, как Вы собираетесь найти другие блоки, которые могли бы внести типы в систему. Простой подход должен искать другие файлы с расширением.DLL в том же каталоге.

Затем каждый раз, когда у Вас есть строка от XML, который Вы хотите использовать для создания экземпляра соответствия Type, просто посмотрите Type в Dictionary по имени и вызов Type.GetConstructor и ConstructorInfo.Invoke.

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

3
ответ дан 13 December 2019 в 22:17
поделиться

Активатор. CreateInstance позволяет Вам передать в имени класса как строка, и он возвратит Вас новый экземпляр того класса.

7
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

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