Export (0) Print
Expand All

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

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

© 2014 Microsoft