protected override object GenerateValue(Type type, string referenceName, LinkedList<object> buildChain)
{
var generateType = type;
if (generateType.IsNullable())
{
// Allow for a 10% the chance that this might be null
var range = Generator.NextValue(0, 100);
if (range < 10)
{
return null;
}
// Hijack the type to generator so we can continue with the normal code pointed at the correct type to generate
generateType = type.GetGenericArguments()[0];
}
var context = buildChain?.Last?.Value;
var min = GetMinimum(generateType, referenceName, context);
var max = GetMaximum(generateType, referenceName, context);
return Generator.NextValue(generateType, min, max);
}