예제 #1
0
    public static void  RuntimeFieldHandleTest()
    {
        Type               t = typeof(Derived);
        FieldInfo          f = t.GetField(nameof(Base.MyField));
        RuntimeFieldHandle h = f.FieldHandle;

        Assert.True(h.Value != IntPtr.Zero);

        Assert.Equal(h.GetHashCode(), h.GetHashCode());
        Assert.Equal(default(RuntimeFieldHandle).GetHashCode(), default(RuntimeFieldHandle).GetHashCode());

        Assert.True(h.Equals(h));
        Assert.False(h.Equals(default(RuntimeFieldHandle)));
        Assert.False(default(RuntimeFieldHandle).Equals(h));
        Assert.True(default(RuntimeFieldHandle).Equals(default(RuntimeFieldHandle)));

        Assert.True(h.Equals((object)h));
        Assert.True(((IEquatable <RuntimeFieldHandle>)h).Equals(h));
        Assert.False(h.Equals(new object()));
        Assert.False(h.Equals(null));

        Assert.False(h == default(RuntimeFieldHandle));
        Assert.True(h != default(RuntimeFieldHandle));

        IntPtr             hPtr = RuntimeFieldHandle.ToIntPtr(h);
        RuntimeFieldHandle hNew = RuntimeFieldHandle.FromIntPtr(hPtr);

        Assert.True(h.Equals(hNew));
        Assert.True(hNew.Equals(h));
    }