Press "Enter" to skip to content

Utilizzare il ToString per effettuare il Dump di un oggetto

Un articolo veloce in risposta ad un quesito su Forum Microsoft,

La persona chiedeva quale fosse la migliore libreria per effettuare la visualizzazione su console del contenuto di un oggetto. Ce ne sono un paio open source disponibili su NuGet.

Potete usare queste librerie di terze parti, oppure potete perdere qualche minuto di tempo sulle vostre classi contenenti dati (entity o altro) e implementare un override del metodo ToString per visualizzare a video, o anche su una finestra molto rapidamente il contenuto di una variabile oggetto o di una collection.

Il mio esempio è una applicazione Console che mostra il contenuto di una collection.

La classe Item:

	public class Item
	{
		private int mID;

		public int ID
		{
			get
			{
				return mID;
			}
			set
			{
				mID = value;
			}
		}

		private string mName;

		public string Name
		{
			get
			{
				return mName;
			}
			set
			{
				mName = value;
			}
		}

		private string mDescription;

		public string Description
		{
			get
			{
				return mDescription;
			}
			set
			{
				mDescription = value;
			}
		}

		private DateTime mCreationDate;

		public DateTime CreationDate
		{
			get
			{
				return mCreationDate;
			}
			set
			{
				mCreationDate = value;
			}
		}

		public override string ToString()
		{
			StringBuilder sb = new StringBuilder();
			sb.AppendFormat("{0}: {1} {2} {3}", ID, Name, CreationDate.ToShortDateString(), CreationDate.ToLongTimeString());
			sb.AppendLine();
			sb.AppendLine(Description);
			return sb.ToString();
		}

	}

 

La classe ItemsCollection:

	public class ItemsCollection: List
	{

		public Item this[string name]
		{
			get
			{
				return this.FirstOrDefault(item => item.Name == name);
			}
		}

		public override string ToString()
		{
			StringBuilder sb = new StringBuilder();
			foreach (Item itm in this)
			{
				sb.AppendLine(new string('-', 80));
				sb.AppendLine(itm.ToString());
			}
			return (sb.ToString());
		}
	}

 

Ed infine il programma che le usa per visualizzare su console il contenuto della collection:

	class Program
	{
		static void Main(string[] args)
		{
			int idCounter = 0;
			ItemsCollection coll = new ItemsCollection();
			idCounter++;
			Item itm = new Item();
			itm.ID = idCounter;
			itm.Name = "Golf-19TDI";
			itm.Description = "Golf TDI 1900 130CV Rossa, cerchi in lega";
			itm.CreationDate = DateTime.Now.AddYears(-1);
			coll.Add(itm);

			idCounter++;
			itm = new Item();
			itm.ID = idCounter;
			itm.Name = "LEON-21TDI";
			itm.Description = "Leon TDI 2100 150CV Blu oceano, cerchi in lega";
			itm.CreationDate = DateTime.Now.AddMonths(-6);
			coll.Add(itm);

			idCounter++;
			itm = new Item();
			itm.ID = idCounter;
			itm.Name = "MINI-CM";
			itm.Description = "Mini Countryman 1600 110CV Verde Inglese, cerchi in lega";
			itm.CreationDate = DateTime.Now.AddDays(-47);
			coll.Add(itm);

			idCounter++;
			itm = new Item();
			itm.ID = idCounter;
			itm.Name = "CQ-ABH";
			itm.Description = "Cinquecento Abarth 130CV Bi colore rosso nero, cerchi in lega";
			itm.CreationDate = DateTime.Now.AddDays(-249);
			coll.Add(itm);

			Console.WriteLine(coll.ToString());
			Console.ReadLine();

		}
	}

Il risultato è il seguente:

Mi , il codice a corredo può essere scaricato al link seguente:

Nel Progetto trovate ovviamente il codice commentato completo.

Se avete domande, osservazioni, commenti, potete scrivermi utilizzando l’opzione di menu con la bustina.