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。