public void DecodeToInstance(ProtocolBuffer protocolBuffer, object instance) { int num = 0; try { while (num < this.codecCount) { PropertyCodec codec = this.codecs[num]; object obj2 = codec.Codec.Decode(protocolBuffer); codec.PropertyInfo.SetValue(instance, obj2, null); num++; } } catch (Exception exception) { StringBuilder builder = new StringBuilder(); for (int i = 0; i <= num; i++) { PropertyCodec codec2 = this.codecs[i]; builder.Append(codec2.PropertyInfo.Name); builder.Append("="); builder.Append(codec2.PropertyInfo.GetValue(instance, BindingFlags.Default, null, null, null)); builder.Append("\n"); } object[] objArray1 = new object[] { "Struct decode failed; Type: ", instance.GetType().Name, " decodedPropertis: ", builder }; throw new Exception(string.Concat(objArray1), exception); } }
public void Encode(ProtocolBuffer protocolBuffer, object data) { for (int i = 0; i < this.codecCount; i++) { PropertyCodec codec = this.codecs[i]; try { object obj2 = codec.PropertyInfo.GetValue(data, BindingFlags.Default, null, null, null); codec.Codec.Encode(protocolBuffer, obj2); } catch (Exception exception) { object[] objArray1 = new object[] { "Property encoding exception, property=", codec.PropertyInfo.Name, " type=", codec.PropertyInfo.DeclaringType }; throw new Exception(string.Concat(objArray1), exception); } } }