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") }); }); }
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)); }