none
DynamicMethod 封装一个静态属性? RRS feed

  • 问题

  •  

    public delegate TSource TestDelegate();

     

    class A {
    		static public string Property { getset; }
    }
    我自己实现了一个获取该类的属性,引发了异常.
    [TestMethod()]
    		public void MethodTest() {
    			PropertyInfo property = typeof(A).GetProperty("Property"); ;
    			FieldInfo field = typeof(A).GetField("field");
    			DynamicMethod dynamicMethod = new DynamicMethod(
    							"InternalGetProperty",
    							typeof(string),
    							null
    			);
    			var il = dynamicMethod.GetILGenerator();
    			// 理想的语句 return get_Property(); 
    			il.Emit(OpCodes.Ldarg_0);
    			il.Emit(OpCodes.Callvirt, property.GetGetMethod()); // true 与 false 都是无效?  - -#
    			il.Emit(OpCodes.Ret);
    			TestDelegate testDelegate = (TestDelegate)dynamicMethod.CreateDelegate(typeof(TestDelegate));
    			TestContext.WriteLine(testDelegate());	// 引发了异常: System.Security.VerificationException: 操作可能会破坏运行时稳定性。
    		}

     







    • 已编辑 钱仔 2011年10月26日 16:44
    2011年10月26日 1:57

答案

全部回复