/// <summary>Gets the latest versions of each of our composed systems.</summary> /// <returns>A list of SystemExporters as used to instantiate our systems.</returns> private List <SystemExporter> GetLatestSystems() { // If you get a dependency load error here right after trying to update a dependency version (e.g. through NuGet), // check to ensure all libraries which reference that dependency have been updated to the same version. DefaultComposer.Container.ComposeParts(this); // Find the Type of each distinct available system. ToList forces LINQ to process immediately. var systems = new List <SystemExporter>(); var systemTypes = from s in this.AvailableSystems select s.Value.SystemType; var distinctTypeNames = (from t in systemTypes select t.Name).Distinct().ToList(); foreach (string systemTypeName in distinctTypeNames) { // Add only the single most-recent version of this type (if there were more than one found). SystemExporter systemToAdd = (from s in this.AvailableSystems let type = s.Value.SystemType where type.Name == systemTypeName orderby s.Metadata.Priority descending, type.Assembly.GetName().Version.Major descending, type.Assembly.GetName().Version.Minor descending, type.Assembly.GetName().Version.Build descending, type.Assembly.GetName().Version.Revision descending select s.Value).FirstOrDefault(); systems.Add(systemToAdd); } return(systems); }
/// <summary>Gets the latest versions of each of our composed systems.</summary> /// <returns>A list of SystemExporters as used to instantiate our systems.</returns> private List <SystemExporter> GetLatestSystems() { DefaultComposer.Container.ComposeParts(this); // Find the Type of each distinct available system. ToList forces LINQ to process immediately. var systems = new List <SystemExporter>(); var systemTypes = from s in this.AvailableSystems select s.SystemType; var distinctTypeNames = (from t in systemTypes select t.FullName).Distinct().ToList(); foreach (string systemTypeName in distinctTypeNames) { // Add only the single most-recent version of this type (if there were more than one found). SystemExporter systemToAdd = (from s in this.AvailableSystems where s.SystemType.FullName == systemTypeName orderby s.SystemType.Assembly.GetName().Version.Major descending, s.SystemType.Assembly.GetName().Version.Minor descending, s.SystemType.Assembly.GetName().Version.Build descending, s.SystemType.Assembly.GetName().Version.Revision descending select s).FirstOrDefault(); systems.Add(systemToAdd); } return(systems); }