Во время выполнения, я считаю, тип объекта, из которого я хочу, чтобы создать экземпляр:Присвоить динамически десериализован значение динамически создается экземпляр
string typeName = "myNamespace.type, assembly";
Type theType = Type.GetType(typeName);
// the type features a constructor w/o arguments:
object theInstance = Acivator.CreateInstance(theType);
Это прекрасно работает и в отладчике я могу видеть все значения атрибутов - Я полагаю, что отладчик использует отражение?
У меня также есть динамически десериализованное объект типа объекта, для которого я знаю, что это на самом деле типа theType:
// pseudo code on the rhs of the "="
object deserialized = decoder.decode(serializedObject.body);
Есть ли способ, чтобы назначить deserialized
к theInstance
, без зацикливания над атрибутами тип с использованием отражения? Поскольку это будет критическим для времени: если единственный способ сделать это - это отражение, есть ли способ минимизировать штраф за производительность? Я ожидаю многие из этих объектов за короткое время.
(Это .Net 3.5, поэтому, если Type dynamic может решить это, это бесполезно в этом случае).
Звучит как работа для генериков – asawyer
Зачем вам нужно создать экземпляр объекта перед десериализацией другого? Почему вы не можете использовать десериализованный объект вместо копирования его атрибутов на другой объект? – cdhowie
Я думаю, что это будет вниз, и это запрещено в C#. Поправьте меня, если я ошибаюсь. –