Example #1
0
		public void ReflectTransparentPrivateStruct_InternalField ()
		{
			PrivateType pt = new PrivateType (1.0, 2.0);
			FieldInfo fi = typeof (PrivateType).GetField ("py", BindingFlags.Instance | BindingFlags.NonPublic);
			// we can find it...
			Assert.IsNotNull (fi, "py");
			// and we can use it, just like we can write "double d = pt.py;"
			Assert.AreEqual (2.0d, (double) fi.GetValue (pt), "GetValue");
			// or "pt.py = -2.0;"
			fi.SetValue (pt, -2.0);
			Assert.AreEqual (-2.0d, pt.Y, "Y");
		}
Example #2
0
		public void ReflectTransparentPrivateType_PrivateField ()
		{
			PrivateType pt = new PrivateType (1.0, 2.0);
			FieldInfo fi = typeof (PrivateType).GetField ("px", BindingFlags.Instance | BindingFlags.NonPublic);
			// we can find it...
			Assert.IsNotNull (fi, "px");
			// but we can't use it, just like we can't write "double d = pt.px;"
			Assert.Throws<FieldAccessException> (delegate {
				fi.GetValue (pt);
			}, "GetValue");
			// or "pt.px = -1.0;"
			Assert.Throws<FieldAccessException> (delegate {
				fi.SetValue (pt, -1.0);
			}, "SetValue");
		}
Example #3
0
		public void ReflectTransparentPrivateType_InternalMember ()
		{
			PrivateType pt = new PrivateType (1.0, 2.0);
			MethodInfo mi = typeof (PrivateType).GetMethod ("Add", BindingFlags.Instance | BindingFlags.NonPublic);
			// we can find it...
			Assert.IsNotNull (mi, "Add");
			// and we can use it since it's internal
			// i.e. just like we could do a "pt.Clear();"
			double result = (double) mi.Invoke (pt, new object [0]);
			Assert.AreEqual (3.0, result, "Return Value");
		}
Example #4
0
		public void ReflectTransparentPrivateType_PrivateMember ()
		{
			PrivateType pt = new PrivateType (1.0, 2.0);
			MethodInfo mi = typeof (PrivateType).GetMethod ("Reset", BindingFlags.Instance | BindingFlags.NonPublic);
			// we can find it...
			Assert.IsNotNull (mi, "Reset");
			// but we can't use it, just like we can't write "pt.Reset();"
			Assert.Throws<MethodAccessException> (delegate {
				mi.Invoke (pt, new object [0]);
			}, "Reset");
		}
Example #5
0
		public void Delegate_CreateDelegate_InternalMethod ()
		{
			PrivateType pt = new PrivateType (1.0, 2.0);
			MethodInfo mi = typeof (PrivateType).GetMethod ("Add", BindingFlags.NonPublic | BindingFlags.Instance);
			Assert.IsNotNull (mi, "Add");

			DoubleGetter dget = (DoubleGetter) Delegate.CreateDelegate (typeof (DoubleGetter), pt, mi);
			Assert.IsNotNull (dget, "Delegate.CreateDelegate(Type,object,string)");

			Assert.AreEqual (3.0, dget (), "dget-1");

			dget = (DoubleGetter) Delegate.CreateDelegate (typeof (DoubleGetter), pt, "Add");
			Assert.IsNotNull (dget, "Delegate.CreateDelegate(Type,object,string)");

			Assert.AreEqual (3.0, dget (), "dget-2");
		}
Example #6
0
		public void Delegate_CreateDelegate_PrivateMethod ()
		{
			PrivateType pt = new PrivateType (1.0, 2.0);
			MethodInfo mi = typeof (PrivateType).GetMethod ("Reset", BindingFlags.NonPublic | BindingFlags.Instance);
			Assert.IsNotNull (mi, "Reset");

			Assert.Throws<MethodAccessException> (delegate {
				Delegate.CreateDelegate (typeof (Caller), pt, mi);
			}, "Delegate.CreateDelegate(Type,object,MethodInfo)");

			Assert.Throws<MethodAccessException> (delegate {
				Delegate.CreateDelegate (typeof (Caller), pt, "Reset");
			}, "Delegate.CreateDelegate(Type,object,string)");
		}