Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }