| File: System\ComponentModel\Design\ArrayEditor.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms.Design\src\System.Windows.Forms.Design.csproj (System.Windows.Forms.Design) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.ComponentModel.Design; /// <summary> /// Edits an array of values. /// </summary> public class ArrayEditor : CollectionEditor { /// <summary> /// Initializes a new instance of <see cref="ArrayEditor"/> /// using the specified type for the array. /// </summary> public ArrayEditor(Type type) : base(type) { } /// <summary> /// Gets or sets the data type this collection contains. /// </summary> protected override Type CreateCollectionItemType() { Type? type = CollectionType.GetElementType(); return type is null ? throw new InvalidOperationException() : type; } /// <summary> /// Gets the items in the array. /// </summary> protected override object[] GetItems(object? editValue) { if (editValue is Array valueArray) { object[] items = new object[valueArray.GetLength(0)]; Array.Copy(valueArray, items, items.Length); return items; } return []; } /// <summary> /// Sets the items in the array. /// </summary> protected override object? SetItems(object? editValue, object[]? value) { if (editValue is not null and not Array) { return editValue; } if (value is null) { return null; } Array newArray = Array.CreateInstance(CollectionItemType, value.Length); Array.Copy(value, newArray, value.Length); return newArray; } }