یکی از کاربران برنامه نویس متوجه وجود باگی در متد AddDays کلاس PersianCalender شد که نتایج اشتباهی رو برای تاریخ های شمسی در فواصلی زمانی طولانی برگشت میده.
من این مشکل رو بررسی کردم و متوجه دلیل این باگ شدم.
PersianCalender از کلاس Calender ارث میبره.
متدهای AddMonths و AddYears در کلاس Calender از نوع MustOverride (در VB.NET) یا abstract (در #C) هستند.
اما متد AddDays از نوع Overridable (در VB.NET) یا virtual (در #C) هست.
بنابراین متدهای AddMonths و AddYears حتما باید Override بشن و برنامه نویس Persian Calender این کار رو کرده اما حواسش به AddDays که Override کردنش دلخواه هست نبوده!

بنابراین AddDays برای تاریخ های شمسی همانند تاریخ های میلادی عمل میکنه!!!