Это ссылка.
`int a; //variable
int @a; //reference
int *a; //pointer`
Ссылка похожа на указатель, который вы должны сначала инициализировать и не можете изменить. Но вы можете изменить значение по этому адресу. И после объявления вам не нужно ставить * перед ним.
Пример правильного объявления: int &a=b;
теперь, чтобы использовать его, вы просто пишете a . И когда вы измените a, то же самое изменение произойдет с b
Для класса для участия в этой схеме я отметил бы его с пользовательским атрибутом, который дает ему "имя XML".
Затем используйте отражение для нахождения весь Type
s отмеченный с тем атрибутом и помещенный их в a Dictionary<string, Type>
. В этой точке необходимо решить, как Вы собираетесь найти другие блоки, которые могли бы внести типы в систему. Простой подход должен искать другие файлы с расширением.DLL в том же каталоге.
Затем каждый раз, когда у Вас есть строка от XML, который Вы хотите использовать для создания экземпляра соответствия Type
, просто посмотрите Type
в Dictionary
по имени и вызов Type.GetConstructor
и ConstructorInfo.Invoke
.
Преимущество этого состоит в том, что идентификатор в XML разделяется от физического расположения Вашего кода - можно переместить типы в блоках или переименовать их, не делая недействительным старые XML-файлы.
Активатор. CreateInstance позволяет Вам передать в имени класса как строка, и он возвратит Вас новый экземпляр того класса.