ParameterDataProvider
The ParameterDataProvider class implements IParameterDataProvider
and hosts one or more individual providers.
using NUnit.Framework.Interfaces;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Internal.Builders
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public class ParameterDataProvider : IParameterDataProvider
{
private readonly List<IParameterDataProvider> _providers = new List<IParameterDataProvider>();
public ParameterDataProvider(params IParameterDataProvider[] providers)
{
_providers.AddRange(providers);
}
public bool HasDataFor(IParameterInfo parameter)
{
foreach (IParameterDataProvider provider in _providers) {
if (provider.HasDataFor(parameter))
return true;
}
return false;
}
public IEnumerable GetDataFor(IParameterInfo parameter)
{
List<IParameterDataProvider>.Enumerator enumerator = _providers.GetEnumerator();
try {
while (enumerator.MoveNext()) {
IParameterDataProvider current = enumerator.Current;
foreach (object item in current.GetDataFor(parameter)) {
yield return item;
}
}
} finally {
((IDisposable)enumerator).Dispose();
}
enumerator = default(List<IParameterDataProvider>.Enumerator);
}
}
}