public static void Main() { WriteHeading(".NET version"); Console.WriteLine(Environment.Version); RuntimeTypeModel orderModel = TypeModel.Create(); orderModel.Add(typeof(OrderHeader), true); orderModel.Add(typeof(OrderDetail), true); orderModel.Compile("OrderSerializer", "OrderSerializer.dll"); RuntimeTypeModel model = BuildMeta(); SampleDto.Customer cust1 = new SampleDto.Customer(); CustomerStruct cust2 = new CustomerStruct(); cust2.Id = cust1.Id = 123; cust2.Name = cust1.Name = "Fred"; #if !FX11 cust1.HasValue = cust2.HasValue = true; cust1.HowMuch = cust2.HowMuch = 0.123; #endif WriteCustomer(model, "Runtime - class", cust1); WriteCustomer(model, "Runtime - struct", cust2); #if FEAT_COMPILER && !FX11 model.CompileInPlace(); WriteCustomer(model, "InPlace- class", cust1); WriteCustomer(model, "InPlace - struct", cust2); #endif #if FEAT_COMPILER TypeModel compiled = model.Compile("CustomerModel", "CustomerModel.dll"); //PEVerify.Verify("CustomerModel.dll"); compiled = model.Compile("CustomerModel", "CustomerModel.dll"); WriteCustomer(compiled, "Compiled - class", cust2); WriteCustomer(compiled, "Compiled - struct", cust2); /* * CustomerModel serializer = new CustomerModel(); * using (MemoryStream ms = new MemoryStream()) * { * Customer cust = new Customer(); * cust.Id = 123; * cust.Name = "Fred"; * serializer.Serialize(ms, cust); * ms.Position = 0; * Customer clone = (Customer)serializer.Deserialize(ms, null, typeof(Customer)); * Console.WriteLine(clone.Id); * Console.WriteLine(clone.Name); * } */ #endif }
public static void Main() { WriteHeading(".NET version"); Console.WriteLine(Environment.Version); RuntimeTypeModel orderModel = TypeModel.Create(); orderModel.Add(typeof(OrderHeader), true); orderModel.Add(typeof(OrderDetail), true); orderModel.Compile("OrderSerializer", "OrderSerializer.dll"); RuntimeTypeModel model = BuildMeta(); Customer cust1 = new Customer(); CustomerStruct cust2 = new CustomerStruct(); cust2.Id = cust1.Id = 123; cust2.Name = cust1.Name = "Fred"; #if !FX11 cust1.HasValue = cust2.HasValue = true; cust1.HowMuch = cust2.HowMuch = 0.123; #endif WriteCustomer(model, "Runtime - class", cust1); WriteCustomer(model, "Runtime - struct", cust2); #if FEAT_COMPILER && !FX11 model.CompileInPlace(); WriteCustomer(model, "InPlace- class", cust1); WriteCustomer(model, "InPlace - struct", cust2); #endif #if FEAT_COMPILER TypeModel compiled = model.Compile("CustomerModel", "CustomerModel.dll"); //PEVerify.Verify("CustomerModel.dll"); compiled = model.Compile("CustomerModel", "CustomerModel.dll"); WriteCustomer(compiled, "Compiled - class", cust2); WriteCustomer(compiled, "Compiled - struct", cust2); /* CustomerModel serializer = new CustomerModel(); using (MemoryStream ms = new MemoryStream()) { Customer cust = new Customer(); cust.Id = 123; cust.Name = "Fred"; serializer.Serialize(ms, cust); ms.Position = 0; Customer clone = (Customer)serializer.Deserialize(ms, null, typeof(Customer)); Console.WriteLine(clone.Id); Console.WriteLine(clone.Name); } */ #endif }