我是C#和Xamarin的新手,所以希望这是一个简单的答案。
我发现自己需要一种可以在不同物体上运行的反射比较方法。我的解决方案基于this问题中接受的答案。由于我需要能够处理超过严格的相等并使用比较运算符(如果可用),我添加了以下检查
if (firstValue is System.IComparable)
{
System.IComparable f = firstValue as System.IComparable;
System.IComparable s = secondValue as System.IComparable;
...
这样我就可以利用CompareTo
方法了解更多信息。
这适用于数值等内容,但不适用于Xamarin生成的Java.Util.Date
,我想了解原因。
namespace Java.Util
{
public class Date : Object, ISerializable, ICloneable, IComparable, IJavaObject, IDisposable
{
...
public virtual int CompareTo(Date date);
...
}
}
从definition of the is
operator in the C# reference开始,似乎这就是is
应评估为true的情况。
我已检查过,IComparable
正在实施的Java.Util.Date
为System.IComparable
。
我目前有一个工作,我只是在日期递归地调用这个方法,但这只是我的困惑。
感谢您的帮助!