Calendar.AlgorithmType Property

Definition

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

C#
public virtual System.Globalization.CalendarAlgorithmType AlgorithmType { get; }
C#
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Globalization.CalendarAlgorithmType AlgorithmType { get; }

Property Value

One of the CalendarAlgorithmType values.

Attributes

Examples

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

C#
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.", ""),
                          cal.InvokeMember("AlgorithmType",
                                           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;
            else
                return true;
        else
            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

Applies to

Produkt Verzie
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1