예제 #1
0
        public static void NegativeMakeTypedReference()
        {
            OtherType data = new OtherType {
                oneStruct = new OneStruct {
                    field = "field", b = 2343
                }
            };
            Type dataType = data.GetType();

            Assert.Throws <ArgumentNullException>(() => { TypedReference.MakeTypedReference(null, dataType.GetFields()); });
            Assert.Throws <ArgumentNullException>(() => { TypedReference.MakeTypedReference(data, null); });
            Assert.Throws <ArgumentException>(() => { TypedReference.MakeTypedReference(data, Array.Empty <FieldInfo>()); });
            Assert.Throws <ArgumentException>(() => { TypedReference.MakeTypedReference(data, new FieldInfo[] { dataType.GetField("oneStruct"), null }); });
            Assert.Throws <ArgumentException>(() => { TypedReference.MakeTypedReference(data, new FieldInfo[] { dataType.GetField("oneStruct"), typeof(OneStruct).GetField("b") }); });
        }
예제 #2
0
        public static void MakeTypedReference_ToObjectTests()
        {
            OneStruct structObj = new OneStruct {
                field = "field", b = 2343
            };
            OtherType data = new OtherType {
                oneStruct = structObj
            };
            Type           dataType  = data.GetType();
            TypedReference reference = TypedReference.MakeTypedReference(data, new FieldInfo[] { dataType.GetField("oneStruct"), typeof(OneStruct).GetField("field") });

            Assert.Equal("field", TypedReference.ToObject(reference));

            reference = TypedReference.MakeTypedReference(data, new FieldInfo[] { dataType.GetField("oneStruct") });
            Assert.Equal(structObj, TypedReference.ToObject(reference));
        }