我正在寻找一种策略,我可以使用该策略将 String.CompareTo 的默认排序顺序设置为 bytewise - ordinal。我需要这样做,而不必在方法调用中指定排序顺序。
我尝试了几种策略,但都没有令人满意的结果。我做到了这一点:
CultureAndRegionInfoBuilder crib =
new CultureAndRegionInfoBuilder("foo", CultureAndRegionModifiers.Neutral);
CompareInfo compareInfo = new CustomCompareInfo();
crib.Register();
在此 CustomCompareInfo 中,我尝试覆盖默认的 CompareInfo 类,但不幸的是,这无法编译:
The type 'System.Globalization.CompareInfo' has no constructors defined
我被困在这里。感觉 CompareInfo 的自定义实现是我的问题的解决方案。
对此有任何想法吗?
编辑:我的问题的背景:
我正在从事的这个项目非常不同寻常——一个庞大的代码库已经从另一种编程语言转换为 .NET。在这种编程语言中,字符串比较默认为序数,而与 .NET 的这种差异会导致转换后的代码库出现错误,所以我认为如果我们能够将 .NET 配置为相同的默认行为,这将是最优雅的解决方案。
当然,可以使用比较说明符重新转换代码。或者,我们可以引入一个扩展方法来执行序数(二进制)比较。等等..
然而,就我而言,从架构的角度来看,这些解决方案并不那么优雅。这就是为什么我正在寻找一个解决方案,我可以在框架上全局设置这个序数比较。
提前致谢!