/// <summary> /// Parse the AddressBookPropertyRow structure. /// </summary> /// <param name="s">An stream containing AddressBookPropertyRow structure.</param> public override void Parse(Stream s) { base.Parse(s); this.Flags = ReadByte(); List<object> result = new List<object>(); if (largePropTagArray is LargePropertyTagArray) { foreach (var propTag in largePropTagArray.PropertyTags) { object addrRowValue = null; if (this.Flags == 0x00) { if (propTag.PropertyType != PropertyDataType.PtypUnspecified) { AddressBookPropertyValue propValue = new AddressBookPropertyValue(propTag.PropertyType, this.ptypMultiCountSize); propValue.Parse(s); addrRowValue = propValue; } else { AddressBookTypedPropertyValue typePropValue = new AddressBookTypedPropertyValue(); typePropValue.Parse(s); addrRowValue = typePropValue; } } else if (this.Flags == 0x01) { if (propTag.PropertyType != PropertyDataType.PtypUnspecified) { AddressBookFlaggedPropertyValue flagPropValue = new AddressBookFlaggedPropertyValue(propTag.PropertyType); flagPropValue.Parse(s); addrRowValue = flagPropValue; } else { AddressBookFlaggedPropertyValueWithType flagPropValue = new AddressBookFlaggedPropertyValueWithType(); flagPropValue.Parse(s); addrRowValue = flagPropValue; } } result.Add(addrRowValue); } } this.ValueArray = result.ToArray(); }
/// <summary> /// Parse the AddressBookTypedPropertyValue structure. /// </summary> /// <param name="s">An stream containing AddressBookTypedPropertyValue structure.</param> public override void Parse(Stream s) { base.Parse(s); this.PropertyType = (PropertyDataType)ReadUshort(); AddressBookPropertyValue addressBookPropValue = new AddressBookPropertyValue(this.PropertyType); addressBookPropValue.Parse(s); this.PropertyValue = addressBookPropValue; }
/// <summary> /// Parse the AddressBookFlaggedPropertyValueWithType structure. /// </summary> /// <param name="s">An stream containing AddressBookFlaggedPropertyValueWithType structure.</param> public override void Parse(Stream s) { base.Parse(s); this.PropertyType = (PropertyDataType)ReadUshort(); this.Flag = ReadByte(); if (this.Flag != 0x01) { if (this.Flag == 0x00) { AddressBookPropertyValue addressPropValue = new AddressBookPropertyValue(PropertyType); addressPropValue.Parse(s); this.PropertyValue = addressPropValue; } else if (this.Flag == 0x0A) { AddressBookPropertyValue addressPropValueForErrorCode = new AddressBookPropertyValue(PropertyDataType.PtypErrorCode); addressPropValueForErrorCode.Parse(s); this.PropertyValue = addressPropValueForErrorCode; } } }