Конструктор Visual Studio 2019, установка свойства массива в конструкторе вызывает всплывающее окно «Значение свойства недопустимо»

#c# #user-controls #visual-studio-2019

#c# #пользовательские элементы управления #visual-studio-2019

Вопрос:

Я использую Visual Studio 2019, версия 16.8.2, у меня есть пользовательская библиотека .net Core 5. Чтобы диагностировать проблему в существующем проекте, преобразованном в Core 5, я создал простой пользовательский элемент управления:

 using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace WinFormsControlLibrary2
{
    public partial class UserControl1 : UserControl
    {
        private TwoElems[] mynums = { new TwoElems(), new TwoElems() };
        public UserControl1()
        {
            InitializeComponent();
        }
        [Browsable(true), NotifyParentProperty(true), EditorBrowsable(EditorBrowsableState.Always)]
        [Category("Log control parameters")]
        [DisplayName("array property")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public TwoElems[] MyNums
        {
            get { return mynums; }
            set { mynums = value; }
        }
    }
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public class TwoElems
    {
        [Browsable(true), NotifyParentProperty(true), EditorBrowsable(EditorBrowsableState.Always)]
        public int sz { get; set; }
        public TwoElems()
        {
            sz = 30;
        }
    }
}
 

Это нормально компилируется, и проект, содержащий этот пользовательский элемент управления, добавляется в панель инструментов.
Затем элемент управления добавляется в форму, и щелчок по многоточиям (…) открывает страницу вложенных свойств для MyNums, отображаются элементы.

Изменение значения любого элемента вызывает всплывающее окно в таблице свойств со словами: значение свойства недопустимо, а деталь: ссылка на объект не установлена для экземпляра объекта.

Нажатие кнопки OK для закрытия всплывающего окна и повторный анализ свойства массива показывают, что измененные значения записываются обратно в свойство.

Такой код (свойства массива) отлично работал в .net Framework и / или более ранней версии Visual Studio.

Есть идеи о том, как определить, что является причиной этого?

С уважением, Оз

Комментарии:

1. Поскольку проблема возникает только в .NET5, вы можете сообщить о проблеме сообществу разработчиков .

2. Спасибо тебе, Кайл, за ссылку. Я сообщил об этом.