public override object GetNewPropValue(ExpectUpdate attr, object obj, PropertyInfo prop) { object newValue = null; if (prop.PropertyType == typeof(byte[])) { if (obj is WebPartGalleryFileDefinition && prop.Name == "Content") { // change web part var webPartXmlString = Encoding.UTF8.GetString(prop.GetValue(obj) as byte[]); var webPartXml = WebpartXmlExtensions.LoadWebpartXmlDocument(webPartXmlString); webPartXml.SetTitleUrl(RndService.HttpUrl()); newValue = Encoding.UTF8.GetBytes(webPartXml.ToString()); } else { newValue = RndService.Content(); } } else if (prop.PropertyType == typeof(string)) { newValue = RndService.String(); } else if (prop.PropertyType == typeof(bool)) { newValue = RndService.Bool(); } else if (prop.PropertyType == typeof(bool?)) { var oldValue = prop.GetValue(obj) as bool?; if (oldValue == null) { newValue = RndService.Bool(); } else { newValue = !oldValue.Value; } } else if (prop.PropertyType == typeof(int)) { newValue = RndService.Int(); } else if (prop.PropertyType == typeof(int?)) { newValue = RndService.Bool() ? (int?)null : RndService.Int(); } else if (prop.PropertyType == typeof(uint)) { newValue = (uint)RndService.Int(); } else if (prop.PropertyType == typeof(uint?)) { newValue = RndService.Bool() ? null : (uint?)RndService.Int(); } else if (prop.PropertyType == typeof(Collection <string>)) { var resultLength = RndService.Int(10); var result = new Collection <string>(); for (var index = 0; index < resultLength; index++) { result.Add(RndService.String()); } newValue = result; } else if (prop.PropertyType == typeof(List <string>)) { var resultLength = RndService.Int(10); var result = new List <string>(); for (var index = 0; index < resultLength; index++) { result.Add(RndService.String()); } newValue = result; } else if (prop.PropertyType == typeof(double?) || prop.PropertyType == typeof(double)) { newValue = (double)RndService.Int(); } else { throw new SPMeta2NotImplementedException(string.Format("Update validation for type: [{0}] is not supported yet", prop.PropertyType)); } return(newValue); }