Exemple #1
0
 public static string GetName(this MemberInfoSlim m)
 {
     return(m switch
     {
         SimpleMethodInfoSlimBase smtd => smtd.Name,
         GenericMethodInfoSlim gmtd => gmtd.GenericMethodDefinition.GetName(),
         PropertyInfoSlim prp => prp.Name,
         FieldInfoSlim fld => fld.Name,
         _ => "<unknown>",
     });
Exemple #2
0
        public void MemberInfoSlimEqualityComparer_Field()
        {
            var tq = new TypeSlimEqualityComparer();
            var eq = new MemberInfoSlimEqualityComparer(tq);

            var asm = new AssemblySlim("foo");

            var tp1 = TypeSlim.Simple(asm, "bar");
            var tp2 = TypeSlim.Simple(asm, "baz");

            var i4 = typeof(int).ToTypeSlim();
            var i8 = typeof(long).ToTypeSlim();

            var fld11_0 = new FieldInfoSlim(tp1, "qux1", i4);
            var fld12_0 = new FieldInfoSlim(tp1, "qux2", i4);
            var fld13_0 = new FieldInfoSlim(tp1, "qux3", i8);

            var fld11_1 = new FieldInfoSlim(tp1, "qux1", i4);
            var fld12_1 = new FieldInfoSlim(tp1, "qux2", i4);
            var fld13_1 = new FieldInfoSlim(tp1, "qux3", i8);

            var fld21_0 = new FieldInfoSlim(tp2, "qux1", i4);

            Assert.IsTrue(eq.Equals(fld11_0, fld11_0));
            Assert.IsTrue(eq.Equals(fld11_0, fld11_1));
            Assert.IsTrue(eq.Equals(fld11_1, fld11_0));
            Assert.IsTrue(eq.Equals(fld11_1, fld11_1));

            Assert.IsTrue(eq.Equals(fld12_0, fld12_0));
            Assert.IsTrue(eq.Equals(fld12_0, fld12_1));
            Assert.IsTrue(eq.Equals(fld12_1, fld12_0));
            Assert.IsTrue(eq.Equals(fld12_1, fld12_1));

            Assert.IsTrue(eq.Equals(fld13_0, fld13_0));
            Assert.IsTrue(eq.Equals(fld13_0, fld13_1));
            Assert.IsTrue(eq.Equals(fld13_1, fld13_0));
            Assert.IsTrue(eq.Equals(fld13_1, fld13_1));

            Assert.IsFalse(eq.Equals(fld11_0, fld12_0));
            Assert.IsFalse(eq.Equals(fld12_0, fld11_0));
            Assert.IsFalse(eq.Equals(fld11_0, fld21_0));
            Assert.IsFalse(eq.Equals(fld21_0, fld11_0));

            Assert.AreEqual(eq.GetHashCode(fld11_0), eq.GetHashCode(fld11_1));
            Assert.AreEqual(eq.GetHashCode(fld12_0), eq.GetHashCode(fld12_1));
            Assert.AreEqual(eq.GetHashCode(fld13_0), eq.GetHashCode(fld13_1));
        }
Exemple #3
0
        public void MemberInfoSlimEqualityComparer_Trivialities()
        {
            var tq = new TypeSlimEqualityComparer();
            var eq = new MemberInfoSlimEqualityComparer(tq);

            var i4 = typeof(int).ToTypeSlim();
            var fl = new FieldInfoSlim(i4, "foo", i4);
            var pr = PropertyInfoSlim.Make(i4, "bar", i4, new List <TypeSlim>().AsReadOnly(), canWrite: true);

            Assert.IsTrue(eq.Equals(null, null));
            Assert.AreEqual(eq.GetHashCode(null), eq.GetHashCode(null));

            Assert.IsFalse(eq.Equals(fl, null));
            Assert.IsFalse(eq.Equals(null, fl));

            Assert.IsFalse(eq.Equals(fl, pr));
            Assert.IsFalse(eq.Equals(pr, fl));
        }
Exemple #4
0
 protected override int VisitField(FieldInfoSlim field) => Combine((int)field.MemberType, Visit(field.DeclaringType), Visit(field.FieldType), Visit(field.Name));
 protected override int VisitField(FieldInfoSlim field) => throw new NotImplementedException();
 protected override MemberInfoSlim VisitField(FieldInfoSlim field)
 {
     return(SlimType.GetProperty("Foo", propertyType: null, EmptyReadOnlyCollection <TypeSlim> .Instance, canWrite: true));
 }
Exemple #7
0
 private static void AssertAreSameField(FieldInfo fieldInfo, FieldInfoSlim fieldInfoSlim)
 {
     Assert.AreEqual(fieldInfo.Name, fieldInfoSlim.Name);
     Assert.IsTrue(TypeSlimExtensions.Equals(fieldInfo.DeclaringType.ToTypeSlim(), fieldInfoSlim.DeclaringType));
     Assert.IsTrue(TypeSlimExtensions.Equals(fieldInfo.FieldType.ToTypeSlim(), fieldInfoSlim.FieldType));
 }
Exemple #8
0
 public FieldDef(TypeRef declaringType, FieldInfoSlim field)
     : base(declaringType)
 {
     _field = field;
 }