AssertEquals (typeof (Marshal1), Type.GetType (attr.MarshalType));
*/
}
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void GetValueOnRefOnlyAssembly ()
+ {
+ Assembly assembly = Assembly.ReflectionOnlyLoad (typeof (FieldInfoTest).Assembly.FullName);
+ Type t = assembly.GetType (typeof (RefOnlyFieldClass).FullName);
+ FieldInfo f = t.GetField ("RefOnlyField", BindingFlags.Static | BindingFlags.NonPublic);
+
+ f.GetValue (null);
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void SetValueOnRefOnlyAssembly ()
+ {
+ Assembly assembly = Assembly.ReflectionOnlyLoad (typeof (FieldInfoTest).Assembly.FullName);
+ Type t = assembly.GetType (typeof (RefOnlyFieldClass).FullName);
+ FieldInfo f = t.GetField ("RefOnlyField", BindingFlags.Static | BindingFlags.NonPublic);
+
+ f.SetValue (null, 8);
+ }
+
+ const int literal = 42;
+
+ [Test]
+ [ExpectedException (typeof (FieldAccessException))]
+ public void SetValueOnLiteralField ()
+ {
+ FieldInfo f = typeof (FieldInfoTest).GetField ("literal", BindingFlags.Static | BindingFlags.NonPublic);
+ f.SetValue (null, 0);
+ }
+
+ public int? nullable_field;
+
+ public static int? static_nullable_field;
+
+ [Test]
+ public void NullableTests ()
+ {
+ FieldInfoTest t = new FieldInfoTest ();
+
+ FieldInfo fi = typeof (FieldInfoTest).GetField ("nullable_field");
+
+ fi.SetValue (t, 101);
+ AssertEquals (101, fi.GetValue (t));
+ fi.SetValue (t, null);
+ AssertEquals (null, fi.GetValue (t));
+
+ FieldInfo fi2 = typeof (FieldInfoTest).GetField ("static_nullable_field");
+
+ fi2.SetValue (t, 101);
+ AssertEquals (101, fi2.GetValue (t));
+ fi2.SetValue (t, null);
+ AssertEquals (null, fi2.GetValue (t));
+ }
#endif
}
+#if NET_2_0
+// Helper class
+class RefOnlyFieldClass
+{
+ // Helper property
+ static int RefOnlyField;
+}
+#endif
}