Мне нужно несколько раз клонировать довольно большой объект, и я нахожу более быстрый способ сделать это.Что является самым быстрым способом клонирования объекта несколько раз
Теперь я использую сериализацию BinaryForamter
в MemoryStream
. Так вот, как я хотел бы использовать функцию Я говорю о (DeserializeToList
является метод, который я ищу):
var originalObject = new MyClass();
var objectClones = new List<MyClass>();
var cloneCount = 10;
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, originalObject);
stream.Seek(0, SeekOrigin.Begin);
objectClones = (MyClass)formatter.DeserializeToList(formatter, cloneCount);
}
ли кто-нибудь есть какие-нибудь идеи?
UPDATE:
Я не хочу, чтобы изменить MyClass
. Вот почему я использую двоичную сериализацию. Так что MyClass.Clone
пока не является решением.
UPDATE 2:
Я не хочу даже прикасаться MyClass
или им свойства. Так что копирование свойств вручную не так, как я и ищу.
Если ваши объекты как большой, как вы предлагаете, имейте в виду, что это решение будет нужно примерно 3x больше памяти для выполнения операции клонирования. OriginalObject + MemoryStream + CloneObject. Вероятно, вы можете быстрее повысить производительность и улучшить использование памяти, вручную клонируя нужные вам поля. –
@BradleyUffner Да, это так. Но я бы не хотел менять MyClass' на данный момент – Alexander
Затем проверьте суррогаты сериализации. Он позволяет выполнять ручную двоичную сериализацию без изменения исходного класса. Это может быть немного сложной мыслью –