public override object GenerateInstance(Type modelType, IValueProvider valueProvider) { if (modelType == typeof(PersonModel)) { var id = valueProvider.Extract<int>("ModelObject.Id"); if (id == 0) { return new PersonModel(this.PersonFactory.Create()); } else { return new PersonModel(this.PersonFactory.Fetch(id)); } } return base.GenerateInstance(modelType, valueProvider); }