недавно я перезаписал sysglobl.dll в GAC, добавив код IL к одной из функций в классе CultureDefinition, так что .NET Framework и Visual Studio загружают измененную dll напрямую из GAC.Функция:
System.Globalization.CalendarId CalendarIdofCalendar (System.Globalization.Calendar)
вот код инструмента ildasm.
IL_0077: ldarg.0
IL_0078: isinst [mscorlib]System.Globalization.KoreanCalendar
IL_007d: brfalse.s IL_0081
IL_007f: ldc.i4.5
IL_0080: ret
IL_0081: ldarg.0
IL_0082: isinst [mscorlib]System.Globalization.HijriCalendar
IL_0087: brfalse.s IL_008b
IL_0089: ldc.i4.6
IL_008a: ret
Добавленный код
IL_008b: ldarg.0
IL_008c: isinst [mscorlib]System.Globalization.PersianCalendar
IL_0091: brfalse.s IL_0096
IL_0093: ldc.i4.s 22
IL_0095: ret
Конец добавленного кода
IL_0096: ldarg.0
IL_0097: isinst [mscorlib]System.Globalization.UmAlQuraCalendar
IL_009c: brfalse.s IL_00a1
IL_009e: ldc.i4.s 23
IL_00a0: ret
IL_00a1: ldstr "CustomCaledarsNotSupported"
IL_00a6: call string System.Globalization.CultureAndRegionInfoBuilder::GetResourceString(string)
IL_00ab: newobj instance void [mscorlib]System.NotSupportedException::.ctor(string)
IL_00b0: throw
Теперь вот проблема в строке
__IL_008c: isinst [mscorlib]System.Globalization.PersianCalendar__
, когдаЯ передаю экземпляр PersianCalendar isinst , возвращающий нулевое значение, поэтому функция генерирует исключение NotSupportedException.но если я передам HijriCalendar, он будет работать нормально и перейдет к строке
**IL_0089: ldc.i4.6**
и т. д.
Я не могу найти причину, по которой часть, которую я добавил, не будет работать.
Заранее спасибо.