public override bool PerformDragOperation(NSDraggingInfo sender) { var result = base.PerformDragOperation(sender); if (result) { var fileNamesXml = sender.DraggingPasteboard.GetStringForType("NSFilenamesPboardType"); if (fileNamesXml != null) { var propertyData = NSData.FromString(fileNamesXml); var format = NSPropertyListFormat.Xml; var ser = (NSArray)NSPropertyListSerialization.PropertyListWithData(propertyData, ref format, out var error); if (error == null && ser != null && ser.Count > 0) { var path = NSString.FromHandle(ser.ValueAt(0)); DraggingDidEnd?.Invoke(this, path); } } } return(result); }
/// <exception cref="FailedToParsePlist"></exception> public static NSDictionary PayloadToNSDictionary(byte[] payload) { var plistData = NSData.FromArray(payload); var format = NSPropertyListFormat.Xml; NSError error; var ret = (NSDictionary)NSPropertyListSerialization.PropertyListWithData(plistData, ref format, out error); if (ret == null) { throw new FailedToParsePlist(); } return(ret); }