[Mono-list] difference between corlib.dll and System.dll and other questions

Ulrich Kunitz gefm21@uumail.de
Thu, 14 Mar 2002 22:36:38 +0100

I've implemented some classes missing in System.Globalization
(*Calendar) as my first C# code.

The next step is to include them into mcs/class tree. To save work I
have a couple of questions.

(1) corlib.dll or System.dll?

Classes from the System.Globalization namespace can be found in
corlib.dll or System.dll. How can I decide, where to put the classes?
Looking with ildasm.exe into mscorlib.dll? The *Calendar classes are not
part of the ECMA all.xml, so it isn't obvious.

(2) How to call a namespace for helper classes?

I've some helper classes in a seperate namespace. Can I call it 
System.Globalization.CalendricalCalculations? I used the algorithms
from the excellent book "Calendrical Calculations" by Nachum
Dershowitz and Edward M. Rheingold.

(3) Does Mono have a registry?

The .net calendar classes are using registry entries (e.g. HKCU/Control
Panel/International/AddHijriDate) to set defaults. Currently I'm
providing defaults in the source code and added a new property for
AddHijriDate to control the value. Way to go?

(4) How compatible is Mono to .net bugs and limitations?

The GregorianCalendar class of .net has a bug in the argument handling
of some member. I fixed it in my implementation, which could break
broken code who uses wrong arguments.

For some non-obvious reason the .net HebrewCalendar implementation
allows only a window (gregorian calendar years 1582 to 2240). I could do
better than that, currently I decided to be compatible to .net and throw
a ArgumentOutOfRange exception for such cases. I hope nobody expects me to
support always the same exception message string than .net.

It will take some time for me to provide the patch, because
documentation and NUnit work have also to be done.

Ulrich Kunitz (gefm21@uumail.de)