List<> 属性 可以有不同的类型,它们都继承自同一个 class

List<> property able to have different types that all inherit from the same class

所以我有这个 class

    public abstract class Feature
    {
        public string Id { get; set; }
        public string Type { get; set; }
    }

然后我会有不同的classes,它们都继承了这个,但在其他方面有所不同

举个例子,我要这个

public class FirstClass: Feature
{
    public string FirstClassKey { get; set; }
}

然后我有另一个 class,它将有一个 List<>,我想在其中包含 FirstClassKey 和所有功能属性,但它需要是通用的,因为如果我有一个类似的 SecondClass 也将继承 Feature class 我希望能够将下面的 class 用于将具有 SecondClassKey 然后所有的列表特征属性。

public class FeatureCollection
{
  public string Type { get; set; }
  public List<> Features { get;set; }
}

所以有时 FeatureCollection 对象看起来像

{
 Type: "SomeType",
 Features = [FirstClassKey: "12", Id: "20", Type: "FeatureType"]
}

有时喜欢

{
 Type: "SomeType",
 Features = [SecondClassKey: "48", Id: "20", Type: "FeatureType"]
}

这是否可能,或者我必须为每个将继承 Feature 摘要的不同 class 创建一个 FeatureCollection class class

我不确定我是否理解正确你想要完成什么,但在我看来你想要使 FeatureCollection 通用:

public class FeatureCollection<TFeature> where TFeature : Feature
{
  public string Type { get; set; }
  public List<TFeature> Features { get; set; }
}

现在 FeatureCollection<FirstClass> 只能存储 FirstClass 的实例或从 FirstClass 派生的类型的实例,而 FeatureCollection<SecondClass> 不能存储 FirstClass,但可以存储 SecondClass...