using System.Collections.Generic;
public static void Main()
Customer custom = new Customer(1, "titi");
Console.WriteLine(custom.Name);
Console.WriteLine("App continues");
Console.WriteLine(custom.BigObject);
Console.WriteLine("--------------");
CustomerUI ui = new Customer(2, "tata").ToCustomerUI();
Console.WriteLine(ui.Name);
Console.WriteLine("App continues");
Console.WriteLine(ui.BigObject);
public static Customer BL_GetUser()
return new Customer(1, "toto");
public int CustomerID { get; set; }
public string Name { get; set; }
private Lazy<string> _BigObject = null;
public Customer(int id, string name)
_BigObject = new Lazy<string>(() => DAL_LoadBigObject() );
public CustomerUI ToCustomerUI()
CustomerUI ui = new CustomerUI();
ui.CustomerID = this.CustomerID;
ui.SetLazy( new Lazy<string>(() => this.BigObject ) );
public string DAL_LoadBigObject(){
Console.WriteLine("CALL API");
public int CustomerID { get; set; }
public string Name { get; set; }
private Lazy<string> _BigObject = null;
public void SetLazy(Lazy<string> myLazyString){
_BigObject = myLazyString;