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
...
所以我有这个 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
...