AlgorithmType Property

PersianCalendar.AlgorithmType Property


Gets a value indicating whether the current calendar is solar-based, lunar-based, or lunisolar-based.

Namespace:   System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

public override CalendarAlgorithmType AlgorithmType { get; }

A date calculation for a particular calendar depends on whether the calendar is solar-based, lunar-based, or lunisolar-based.

The following example uses reflection to instantiate each Calendar type found in the .NET Framework and displays the value of its AlgorithmType property.

using System;
using System.Collections;
using System.Globalization;
using System.Reflection;

public class Example
   public static void Main()
      Assembly assem = Assembly.GetAssembly(typeof(Calendar));
      Type[] types = assem.GetExportedTypes();
      Type[] calendars = Array.FindAll(types, IsValidCalendar);
      Array.Sort(calendars, new CalendarComparer());

      Console.WriteLine("{0,-30} {1}\n", "Calendar", "Algorithm Type");
      foreach (var cal in calendars) {
         // Instantiate a calendar object.
         ConstructorInfo ctor = cal.GetConstructor( new Type[] {} );
         Calendar calObj = (Calendar) ctor.Invoke( new Type[] {} ); 

         Console.WriteLine("{0,-30} {1}", 
                          cal.ToString().Replace("System.Globalization.", ""),
                                           BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty,
                                           null, calObj, null));

   private static bool IsValidCalendar(Type t)
        if (t.IsSubclassOf(typeof(Calendar)))
            if (t.IsAbstract)
                return false;
                return true;
            return false;

public class CalendarComparer : IComparer
   public int Compare(object x, object y)
      Type tX = (Type) x;
      Type tY = (Type) y;

      return tX.Name.CompareTo(tY.Name);
// The example displays the following output:
//       Calendar                       Algorithm Type
//       ChineseLunisolarCalendar       LunisolarCalendar
//       GregorianCalendar              SolarCalendar
//       HebrewCalendar                 LunisolarCalendar
//       HijriCalendar                  LunarCalendar
//       JapaneseCalendar               SolarCalendar
//       JapaneseLunisolarCalendar      LunisolarCalendar
//       JulianCalendar                 SolarCalendar
//       KoreanCalendar                 SolarCalendar
//       KoreanLunisolarCalendar        LunisolarCalendar
//       PersianCalendar                SolarCalendar
//       TaiwanCalendar                 SolarCalendar
//       TaiwanLunisolarCalendar        LunisolarCalendar
//       ThaiBuddhistCalendar           SolarCalendar
//       UmAlQuraCalendar               LunarCalendar

.NET Framework
Available since 2.0
Return to top
© 2015 Microsoft