public override IEnumerable <Model.PropertyDescriptor> GetDescriptors() { foreach (var descriptor in BranchPackage.KnowPropertyDescriptors) { if (descriptor.Type == MetadataPropertyType.Metadata) { if (descriptor.Name != null && descriptor.Name.Length == FrameNameLength && (descriptor.Name.StartsWith(TextFrameStart) || descriptor.Name.StartsWith(UrlLinkFrameStart)) && descriptor.Name != TxxxFrameName && descriptor.Name != WxxxFrameName) { yield return(new Model.PropertyDescriptor(descriptor.Name, PropertyType.String, AccessLevels.Full)); } else { yield return(new Model.PropertyDescriptor(descriptor.Name, PropertyType.ByteArray, AccessLevels.Remove)); } } else if (descriptor.Type == MetadataPropertyType.MetadataArray) { if (BranchPackage.Contains(descriptor.Name)) { var property = BranchPackage[descriptor.Name]; var frames = property.Value.ToArray <ID3V2TagFrame>(); if (frames != null) { for (int i = 0; i < frames.Length; i++) { yield return(new Model.PropertyDescriptor(GetPropertyName(frames[i].Id, i + 1), PropertyType.ByteArray, AccessLevels.Remove)); } } } } } }
public override void SaveProperty(string name, PropertyType type, dynamic value) { if (value != null) { string searchName = IptcProperty.UserFriendlyNameToName(name); var propertyValue = CreatePropertyValue((MetadataPropertyType)type, value); Func <MetadataProperty, bool> condition = p => p.Name == searchName; BranchPackage.SetProperties(condition, propertyValue); } }