}
}
+ int lcid; // it is used only for Equals() (not even used in GetHashCode()).
int regionId;
string iso2Name;
string iso3Name;
public RegionInfo (int lcid)
{
+#if NET_2_0
+ if (!GetByTerritory (CultureInfo.GetCultureInfo (lcid)))
+ throw new ArgumentException (
+ String.Format ("Region ID {0} (0x{0:X4}) is not a supported region.", lcid), "lcid");
+#else
if (!construct_internal_region_from_lcid (lcid))
throw new ArgumentException (
String.Format ("Region ID {0} (0x{0:X4}) is not a " +
"supported region.", lcid), "lcid");
+#endif
}
public RegionInfo (string name)
if (name == null)
throw new ArgumentNullException ();
+#if NET_2_0
+ if (construct_internal_region_from_name (name.ToUpperInvariant ())) {
+ lcid = name.GetHashCode (); // random-ish
+ return;
+ }
+ if (!GetByTerritory (CultureInfo.GetCultureInfo (name)))
+ throw new ArgumentException (String.Format ("Region name {0} is not supported.", name), "name");
+#else
if (!construct_internal_region_from_name (name.ToUpperInvariant ()))
throw new ArgumentException ("Region name " + name +
" is not supported.", "name");
+#endif
+ }
+
+ bool GetByTerritory (CultureInfo ci)
+ {
+ if (ci == null)
+ throw new Exception ("INTERNAL ERROR: should not happen.");
+ if (ci.IsNeutralCulture || ci.Territory == null)
+ return false;
+ this.lcid = ci.LCID;
+ return construct_internal_region_from_name (ci.Territory.ToUpperInvariant ());
}
[MethodImplAttribute (MethodImplOptions.InternalCall)]
get { return currencySymbol; }
}
- [MonoTODO]
+ [MonoTODO ("DisplayName currently only returns the EnglishName")]
public virtual string DisplayName {
get { return englishName; }
}
get { return englishName; }
}
+#if NET_2_0
+ public virtual int GeoId {
+ get { return regionId; }
+ }
+#endif
+
public virtual bool IsMetric {
get {
switch (iso2Name) {
}
#if NET_2_0
- [MonoTODO]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual string NativeName {
get { return DisplayName; }
}
- [MonoTODO]
+ [MonoTODO ("Not implemented")]
public virtual string CurrencyNativeName {
get { throw new NotImplementedException (); }
}
// methods
#if NET_2_0
+ public override bool Equals (object value)
+ {
+ RegionInfo other = value as RegionInfo;
+ return other != null && lcid == other.lcid;
+ }
+
+ public override int GetHashCode ()
+ {
+ return (int) (0x80000000 + (regionId << 3) + regionId); // it i still based on regionId
+ }
#else
public override bool Equals (object value)
{