laptop and a wrench

漏洞

ISymbolEditor.EditSymbol(...) does not commit edits to existing ISymbol reference parameter.

上次发布: November 30, 2018 ArcObjects SDK
漏洞 ID 编号 BUG-000117337
已提交October 9, 2018
上次修改时间June 5, 2024
适用范围ArcObjects SDK
找到的版本10.6
操作系统Windows OS
操作系统版本10.0 64 Bit
状态Will Not Be Addressed

附加信息

The symbol parameter on EditSymbol is a reference parameter, which means a reference must be passed in and cannot be cast on that assignment. An updated version of the OnClick function that fixes the issue is below: protected override void OnClick() { pStyleGallery = GetStyleGallery(); pStyleStorage = pStyleGallery as IStyleGalleryStorage; pStyleStorage.TargetFile = STYLE_PATH; pStyleStorage.AddFile(STYLE_PATH); pEnumStyleGalleryItem = GetEnumStyleGalleryItem(pStyleGallery); // Gets the specified symbol from the style gallery. IStyleGalleryItem styleGalleryItem = LoadStyleSymbol(pEnumStyleGalleryItem, SYMBOl_NAME); //------------------------------------------------------------------------ // Editing Symbol. //------------------------------------------------------------------------ // Using existing item from style gallery. IMarkerSymbol markerSymbol = styleGalleryItem.Item as IMarkerSymbol; ISymbolEditor symbolEditor = new SymbolEditor(); symbolEditor.Title = "Edit " + styleGalleryItem.Name; // Print marker detail before edit. Console.WriteLine("Before dialog edit."); PrintMultiLayerMarkerDetails(markerSymbol as IMultiLayerMarkerSymbol); // "markerSymbol" is pasted as a reference and is ment to change // directly from the dialog inputs by the user. ISymbol editSymbol = markerSymbol as ISymbol; bool isSymbolEdited = symbolEditor.EditSymbol(ref editSymbol, 0); if (!isSymbolEdited) { //Return a message here if the dialog is canceled. Console.WriteLine("Cancel was clicked."); } else // If the user clicks OK. { // EditSymbol is ment to return "markerSymbol" as an IMultiLayerMarkerSymbol. IMultiLayerMarkerSymbol multiMarker = editSymbol as IMultiLayerMarkerSymbol; // Print marker details after the edit. Console.WriteLine("After dialog edit."); PrintMultiLayerMarkerDetails(multiMarker); styleGalleryItem.Item = multiMarker; pStyleGallery.UpdateItem(styleGalleryItem); } }

重现步骤

漏洞 ID: BUG-000117337

软件:

  • ArcObjects SDK

当漏洞状态发生变化时获得通知

下载 Esri 支持应用程序

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项