using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication1
{
class Program
{
[Serializable]
public class IdInfo
{
public int IdNumber { get; set; }
public IdInfo(int IdNumber)
{
this.IdNumber = IdNumber;
}
}
[Serializable]
public class Product
{
public int Number { get; set; }
public IdInfo IdInfo { get; set; }
public string Name { get; set; }
public Product DeepCopy()
{
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, this);
stream.Seek(0, SeekOrigin.Begin);
var product = (Product)formatter.Deserialize(stream);
stream.Close();
stream.Dispose();
return product;
}
}
static void Main(string[] args)
{
List<Product> products = new List<Product>();
products.Add(new Product { Number = 1, Name = "LADA SUPER SPORT PRO", IdInfo = new IdInfo(999) });
List<Product> currentProducts = products.Select(p => p.DeepCopy()).ToList();
currentProducts[0].Number = 22;
currentProducts[0].Name = "BMW M5";
currentProducts[0].IdInfo = new IdInfo(001);
Console.WriteLine(products[0].Number);
Console.WriteLine(products[0].Name);
Console.WriteLine(products[0].IdInfo.IdNumber);
}
}
}