C#通过反射动态修改结构体的值

  在与数据库打交道过程中,结构体数据类型应用的比较多,比如一个表的字段集合就可以设置为一个结构体,通过读取动态数据来实时更改结构体的值。

  但是,通过C#的反射来修改结构体的值,在VS Studio 2015上会报错,而在VS Studio 2022上却不会报错,但是没有正确修改结果。

  通过查询资料,这个是C#的一个BUG,在于装箱和拆箱过程中的问题,但是通过反射动态修改对象的属性值是可以的,这样就需要中间转换一个,就是在修改前,将结构体转换为对象,修改完再强制转换回来。

  BaseClass.cs定义:

    class BaseClass
    {
        public struct TableInfo
        {
            public string FieldNameCN;
            public string FieldNameEN;
            public string FieldType;
            public int FieldLong;
        }
    }

  引用:

  using System.Reflection;

  装箱:object TempObj = TI_B;

  拆箱:TI_B = (BaseClass.TableInfo)TempObj;

猜你喜欢

转载自blog.csdn.net/dawn0718/article/details/127728063
今日推荐