代码之家  ›  专栏  ›  技术社区  ›  tobeypeters

反射铸造

  •  0
  • tobeypeters  · 技术社区  · 6 年前

    我有一个对象,其中有一些字段,我正在使用反射来迭代该对象的字段。此对象被序列化和反序列化。我现在正在编写反序列化例程。我想遍历这些字段,从反序列化SerializationInfo中获取值。在开始实施反射之前,我手动完成了所有操作:

    public SKA_MAP(SerializationInfo info, StreamingContext ctxt)
    {
        //Get the values from info and assign them to the appropriate properties
        DISP_SEGS = (int)info.GetValue("DISP_SEGS", typeof(int)); 
        //other fields followed
    }
    

    现在:

    public SKA_MAP(SerializationInfo info, StreamingContext ctxt)
    {
        //Get the values from info and assign them to the appropriate properties
        //DISP_SEGS = (int)info.GetValue("DISP_SEGS", typeof(int));
    
        foreach (FieldInfo FI in this.GetType().GetFields())
        {
            FI.SetValue(this, info.GetValue(FI.Name, FI.GetType()));
        }
    }
    

    我明白了

    “无效的强制转换自”系统。Int32“to”系统。反射RtFieldInfo“.”

    好的,是的,但我在那里放了不同的演员,没有显示,什么都没有。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Aleks Andreev Md. Suman Kabir    6 年前

    尝试

    FI.SetValue(this, info.GetValue(this));
    

    有关详细信息,请参阅文档 GetValue SetValue