#region License //The contents of this file are subject to the Mozilla Public License //Version 1.1 (the "License"); you may not use this file except in //compliance with the License. You may obtain a copy of the License at //http://www.mozilla.org/MPL/ //Software distributed under the License is distributed on an "AS IS" //basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the //License for the specific language governing rights and limitations //under the License. #endregion using System; using System.Collections.Generic; using Migrator.Framework; namespace Migrator { /// /// Comparer of Migration by their version attribute. /// public class MigrationTypeComparer : IComparer { private readonly bool _ascending = true; public MigrationTypeComparer(bool ascending) { _ascending = ascending; } public int Compare(Type x, Type y) { MigrationAttribute attribOfX = (MigrationAttribute) Attribute.GetCustomAttribute(x, typeof(MigrationAttribute)); MigrationAttribute attribOfY = (MigrationAttribute) Attribute.GetCustomAttribute(y, typeof(MigrationAttribute)); if (_ascending) return attribOfX.Version.CompareTo(attribOfY.Version); else return attribOfY.Version.CompareTo(attribOfX.Version); } } }