C# PropertyGrid将泛型类型更改为特定类型

C# PropertyGrid将泛型类型更改为特定类型,c#,reflection,types,propertygrid,C#,Reflection,Types,Propertygrid,我有两个对象,它们有两种不同的类型。第一种是类型ItemTypes,称为type,第二种是泛型类型,称为子类型 我希望完成的是,当我更改ItemType属性时,我需要将我的子类型属性更改为我拥有的许多不同类型之一(ConsumableSubType,ContainerSubType,等等) 下面是我的两个属性的代码,以及属性网格的一些注释 [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [TypeC

我有两个对象,它们有两种不同的类型。第一种是类型
ItemTypes
,称为
type
,第二种是泛型
类型
,称为
子类型

我希望完成的是,当我更改ItemType属性时,我需要将我的
子类型
属性更改为我拥有的许多不同类型之一(
ConsumableSubType
ContainerSubType
,等等)

下面是我的两个属性的代码,以及属性网格的一些注释

    [RefreshProperties(System.ComponentModel.RefreshProperties.All)]
    [TypeConverter(typeof(EnumConverter))]
    [DisplayName("Type")]
    [XmlIgnore]
    public ItemTypes _Type
    {
        get { return Type; }
        set
        {
            Type = value;
            //Do some logic in here to set _SubType to a different type
        }
    }
    [TypeConverter(typeof(EnumConverter))]
    [DisplayName("Sub Type")]
    [XmlIgnore]
    public Type _SubType { get; set; }

无法在运行时更改属性的类型。但是,您可以将其设置为一个
对象
,然后为其分配任何您喜欢的内容。

对于运行时类型绑定,您可以使用类型dynamicOk,如果我将我的_子类型更改为动态,在将类型设置为ConsumableSubType之后,是否可以刷新属性网格,现在让属性填充枚举值?好的,然后在执行_subtype=typeof(ConsumableSubTypes)之后,这是一个枚举。如何刷新我的属性网格以显示枚举中的新属性?@WesleyPattison这样不行。属性的类型始终为
对象
。我认为它的不足之处在于,您无法使用属性网格完成您试图完成的任务。