小编Ale*_*x A的帖子

DynamicMethod和类型检查

有人可以解释或指出解释为什么运行时类型检查不会出现在下面的示例中 - 字符串属性可以设置为任何类型值...
在非常意外的地方坚持这个并且真的很惊讶

using System;
using System.Reflection;
using System.Reflection.Emit;

namespace Dynamics
{
internal class Program
    {
    private static void Main(string[] args)
    {
        var a = new A();
        a.Name = "Name";
        Console.WriteLine(a.Name.GetType().Name);

        PropertyInfo pi = a.GetType().GetProperty("Name");          

        DynamicMethod method = new DynamicMethod(
                "DynamicSetValue", // NAME
                null, // return type
                new Type[] 
                            {
                                typeof(object), // 0, objSource
                                typeof(object), // 1, value
                            }, // parameter types
                typeof(Program), // owner
                true); // skip visibility

        ILGenerator gen = method.GetILGenerator();
        gen.Emit(OpCodes.Ldarg_0);
        gen.Emit(OpCodes.Ldarg_1);
        gen.Emit(OpCodes.Call, pi.GetSetMethod(true));
        gen.Emit(OpCodes.Ret);

        SetValue …
Run Code Online (Sandbox Code Playgroud)

.net c# dynamicmethod

9
推荐指数
1
解决办法
441
查看次数

标签 统计

.net ×1

c# ×1

dynamicmethod ×1