C # struct instantiation во время выполнения - PullRequest
4 голосов
/ 20 сентября 2010

Кто-нибудь может привести пример, как создать экземпляр структуры во время выполнения?Структура, которую я использую, не определяет конструкторов, только поля.Метод GetConstructor () возвращает значение NULL, и до сих пор я не смог найти способ добиться этого.

Ответы [ 2 ]

6 голосов
/ 20 сентября 2010

Просто используйте Activator.CreateInstance(Type).

Большинство структур на самом деле не имеют конструктора без параметров - используется другая форма IL (инструкция initobj IIRC).

С другой стороны, если структура не имеет каких-либо конструкторов , это говорит о том, что она либо не очень полезна, либо изменчива - а изменяемые структуры могут вызывать любые проблемы. Если вы сами управляете структурным кодом, я бы посоветовал дать ему конструктор и сделать его неизменным. Вероятно, есть случаи, когда изменяемые структуры являются необходимым злом (особенно в области взаимодействия), но их стоит избегать, если это вообще возможно.

5 голосов
/ 20 сентября 2010

Вы пытались использовать:

Object o = Activator.CreateInstance(Type t);

... или некоторые другие его перегрузки?

http://msdn.microsoft.com/en-us/library/system.activator.createinstance%28v=VS.100%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...