public object GenerateValue(BuilderContext context) { var properties = TypeManager.GetProperties(_type); var returnValue = Activator.CreateInstance(_type); foreach (var prop in properties) { if (context.IsInCircularReference(prop.PropertyType)) { continue; } context.SetCurrentProperty(prop); var generator = ValueGeneratorFactory.GetValueGenerator(prop.PropertyType); var value = generator.GenerateValue(context); prop.SetValue(returnValue, value); context.UpdateLastBuildType(prop.PropertyType, value); } return(returnValue); }