我有一个函数返回一个Person类型的对象。
现在,我需要调用另一个接受IEnumerable<Person>
类型的函数。怎么办呢?
下面这个函数给我回复了。
var objA = Service.GetAll(obj);
我需要调用另一个方法,如下所示
var result = Service.Get(AR<IEnumerable<Person>> name, type)
我将名称指定为IEnumerable<Person>
,因为它采用了该类型。
修改
我的第二种方法将此作为参数类型。
AR<IEnumerable<Person>>
在所有其他地方,我的第一个方法返回AR<Ienumerable<person>>
但在一个案例中它返回AR<Person>
。现在我需要将它作为一个列表,AR<IEnumerable<Person>>
,以便我可以按原样使用第二种方法
答案 0 :(得分:4)
在极少数情况下,我使用这样的扩展方法:
var person = FunctionThatGetsPerson();
List<Person> personList = new List<Person> { person };
FunctionThatTakesEnumerable(personList);
public void FunctionThatTakesEnumerable(IEnumerable<Person> personList)
{
//
}
答案 1 :(得分:2)
我正在寻找像
IEnumerable<Person>
这样的东西应该通过 作为第二个函数的参数,而我得到 Person作为返回值 在第一个功能
所以你可以使用这样的代码:
/*while I get Person as return value in first function*/
Person p = FirstMethod();
/*IEnumerable<Person> should be passed as a parameter to second function*/
SecondMethod(new Person[] { p });
虽然第二种方法签名可能是void SecondMethod(IEnumerable<Person> x)
答案 2 :(得分:2)
一种简单的方法是从:
开始public Person GetPerson()
{
return new Person()
}
并添加:
public IEnumerable<Person> GetPeople()
{
return new [] { GetPerson() };
}
答案 3 :(得分:1)
您可以创建devise_for :users
resources :users, only: [:index, :show]
的新实例,因为List<Person>
实现了List<T>
。 https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx
所以:
IEnumerable
答案 4 :(得分:1)