// POO con menos if's (c) 2024 Baltasar MIT License using System; using System.Text; using System.Collections.Generic; class POI { public /*required*/ string Name { get; init; } public /*required*/ double Lat { get; init; } public /*required*/ double Lon { get; init; } public override string ToString() { return $"{this.Name}: W{this.Lon}º N{this.Lat}º"; } } class City: POI { public override string ToString() { return "Ciudad de " + base.ToString(); } } class Monument: POI { public override string ToString() { return "Monumento de " + base.ToString(); } } class Mountain: POI { public override string ToString() { return "Cima del " + base.ToString(); } } class Lake: POI { public override string ToString() { return "Lago " + base.ToString(); } } class Reporter { public Reporter(IEnumerable lpois) { this.lpois = new List( lpois ); } public IList LPOIS => new List( this.lpois ); public string Report() { var toret = new StringBuilder(); foreach(var poi in this.lpois) { toret.AppendLine( poi.ToString() ); } return toret.ToString(); } private List lpois; } public class Test { public static void Main() { var l1 = new List { new City { Name = "El Cabo", Lat = -34.0558188, Lon = 18.3003856 }, new Mountain { Name = "Everest", Lat = 27.9881186, Lon = 86.9043755 }, new Monument { Name = "Torre Eiffel", Lat = 48.8583, Lon = -2.2945 }, new Lake { Name = "Español", Lat = 43.6150755, Lon = 173.1834932 }, }; Console.WriteLine( new Reporter( l1 ).Report() ); } }