C# 如何将对象集合传递到接收基本对象集合的方法中?

C# 如何将对象集合传递到接收基本对象集合的方法中?,c#,C#,说我有这个方法 public void test(IList<AvaliableFeaturesVm> vm) { } 如何将其传递到方法“测试”中。如果测试只接受一个AvailableFeatureVM对象,它将允许我传入TravelFeaturesVm对象,但由于它们位于集合中,因此它不允许我传入。您可以将其设置为通用: public void test<T>(IList<T> vm) where T : Avalia

说我有这个方法

 public void test(IList<AvaliableFeaturesVm> vm)
        {

        }

如何将其传递到方法“测试”中。如果测试只接受一个AvailableFeatureVM对象,它将允许我传入TravelFeaturesVm对象,但由于它们位于集合中,因此它不允许我传入。您可以将其设置为通用:

public void test<T>(IList<T> vm) where T : AvaliableFeaturesVm
{

}
public void test(IList vm),其中T:AvailableFeatureSVM
{
}

您可以将其设置为通用:

public void test<T>(IList<T> vm) where T : AvaliableFeaturesVm
{

}
public void test(IList vm),其中T:AvailableFeatureSVM
{
}

将您的集合声明为
AvailableFeatureSVM
的集合。这将允许您在集合中放置
TravelFeaturesVm
-对象,并允许您将集合传递给您的方法:)

将您的集合声明为
AvailableFeatureSVM
的集合。这将允许您将
TravelFeaturesVm
-对象放入集合中,并允许您将集合传递给您的方法:)

从C#4开始,如果您将第一次调用的签名更改为:

public void test(IEnumerable<AvaliableFeaturesVm> vm)
{
}
当然,这也有其自身的局限性——尤其是,您将无法编写:

vm.Add(new AvailableFeaturesVm());
。。。尽管您可以:

因为约束确保了从
T
AvailableFeaturesVm
的适当转换

有关通用差异的更多信息,请参见。

从C#4开始,如果您将第一次调用的签名更改为:

public void test(IEnumerable<AvaliableFeaturesVm> vm)
{
}
当然,这也有其自身的局限性——尤其是,您将无法编写:

vm.Add(new AvailableFeaturesVm());
。。。尽管您可以:

因为约束确保了从
T
AvailableFeaturesVm
的适当转换


有关泛型差异的详细信息,请参阅。

@TomislavMarkovski:Interfaces and delegate.@TomislavMarkovski:Interfaces and delegate。