public ValidationCheck Validate() { var vc = new ValidationCheck() .Assert(ValidationCheck.BasicStringCheck(this.lobbyId, "lobbyID")) .Assert(host == null, "no host") .Assert(host.Validate) .Assert(metaData == null ? true : metaData.Count < maxMetaDataCount, "too many items in metadata (" + metaData.Count + "/" + maxMetaDataCount + ")") .Assert(creationTime < DateTime.UtcNow.AddDays(1), "creation time is in the future"); if (metaData != null) { foreach (var kv in metaData) { if (!vc.result) { break; } vc.Assert(ValidationCheck.BasicStringCheck(kv.Key, "metaData key")); vc.Assert(ValidationCheck.BasicStringCheck(kv.Value, "metaData value")); } } return(vc); }