我有一个工厂函数,并希望用它来创建一个Enumerable.在C#中,我没有找到一种直接的声明式方法来完成这项工作.所以我这样做了:
public IEnumerable<Contact> Get()
{
return Enumerable.Range(1, 5).Select(x => GenerateRandomContact());
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法?
// Expected format
public IEnumerable<Contact> Get()
{
return Enumerable.Generate(GenerateRandomContact).Take(5);
}
Run Code Online (Sandbox Code Playgroud)
就像是:
public static IEnumerable<T> Generate(Func<T> generator)
{
while(true)
yield return generator.Invoke();
}
Run Code Online (Sandbox Code Playgroud)
但是你不能扩展静态类.所以你应该把它放在一个帮助类中.