using System.Collections.Generic; using System.Linq; using System.Reflection; namespace Console.Waterworks.Core.Specialists { class ProgramInfoSpecialist { internal List GatherProgramInfomation() { var info = new List() { addProductLine(), addCompanyLine(), addCopyRightLine(), addProductDescription() }; return info; } private string addCopyRightLine() { var assembly = Assembly.GetEntryAssembly(); var copyRightAttribute = assembly.GetCustomAttributes().FirstOrDefault(); return copyRightAttribute?.Copyright; } string addProductLine() { var name = GetProductName(); var buildInfo = getBuildInfo(); return (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(buildInfo)) ? $"{name} {buildInfo}" : null; } string addCompanyLine() { var assembly = Assembly.GetEntryAssembly(); var companyAttribute = assembly.GetCustomAttributes().FirstOrDefault(); return companyAttribute?.Company; } string addProductDescription() { var assembly = Assembly.GetEntryAssembly(); var descriptionAttribute = assembly.GetCustomAttributes().FirstOrDefault(); return descriptionAttribute?.Description; } internal string GetProductName() { var assembly = Assembly.GetEntryAssembly(); var productAttribute = assembly.GetCustomAttributes().FirstOrDefault(); return productAttribute?.Product; } string getBuildInfo() => Assembly.GetEntryAssembly().GetName().Version.ToString(); } }