我编写了一个.NET组件,其中包含System.Collections.ObjectModel.Collection<MainClass>
类型的属性。 MainClass
本身有许多子类,名为Derived1
,Derived2
等。编译后,我在设计器中单击此属性,当我尝试添加新项时,{{1}的实例}一直在创建。我想提示用户并询问他们打算插入什么类型的项目。我试图覆盖MainClass
,但它无法更改项目。
此确切行为在InsertItem(int index, SearchableField item)
属性中实现。在列编辑器中单击“添加”时,将显示一个对话框,并向程序员询问新项目的类型。
答案 0 :(得分:-1)
以下是否适合您?您需要添加代码以适当调整数组的大小,但instances
中的每个条目在Derived1
退出时都会保留Derived2
或Main
。
using System;
public abstract class MainClass { }
public class Derived1 : MainClass { }
public class Derived2 : MainClass { }
class Program
{
static void Main(string[] args)
{
Array instances = Array.CreateInstance(typeof(MainClass), 5);
instances.SetValue(AddItem(typeof(Derived1)), 0);
instances.SetValue(AddItem(typeof(Derived2)), 1);
instances.SetValue(AddItem(typeof(Derived1)), 2);
instances.SetValue(AddItem(typeof(Derived2)), 3);
instances.SetValue(AddItem(typeof(Derived1)), 4);
}
static MainClass AddItem<T>(T type) where T : Type
{
return (MainClass)Activator.CreateInstance(type);
}
}