/// <summary> /// Utility to augment the label set on a preexisting array node in an INativeContactProperties. /// </summary> /// <param name="contact">The INativeContactProperties where the labels are to be set.</param> /// <param name="arrayNode">The array node to apply the labels to.</param> /// <param name="labels">The labels to add to the array node.</param> /// <returns>HRESULT.</returns> /// <remarks> /// This is a thin wrapper over the COM INativeContactProperties::SetLabels to make it more easily consumable /// in .Net. Behavior and returned error codes should be similar to the native version. /// </remarks> public static HRESULT SetLabels(INativeContactProperties contact, string arrayNode, ICollection<string> labels) { Verify.IsNotNull(contact, "contact"); using (var marshalable = new MarshalableLabelCollection(labels)) { return contact.SetLabels(arrayNode, ContactValue.CGD_DEFAULT, marshalable.Count, marshalable.MarshaledLabels); } }
public static HRESULT GetPropertyCollection(INativeContactProperties contact, string collection, string[] labels, bool anyLabelMatches, out IContactPropertyCollection propertyCollection) { Verify.IsNotNull(contact, "contact"); uint fAnyLabelMatches = anyLabelMatches ? Win32Value.TRUE : Win32Value.FALSE; using (var mlc = new MarshalableLabelCollection(labels)) { return contact.GetPropertyCollection(out propertyCollection, ContactValue.CGD_DEFAULT, collection, mlc.Count, mlc.MarshaledLabels, fAnyLabelMatches); } }