public static OdcmNamespace OdcmNamespace(Action <OdcmNamespace> config = null) { var retVal = new OdcmNamespace(Any.CSharpIdentifier()); retVal.Types.AddRange(Any.Sequence(s => Any.OdcmEnum())); retVal.Types.AddRange(Any.Sequence(s => Any.ComplexOdcmClass(retVal))); var classes = Any.Sequence(s => Any.OdcmEntityClass(retVal)) .Concat(Any.Sequence(s => Any.MediaOdcmClass(retVal), count: 2)).ToArray(); foreach (var @class in (from @class in retVal.Types where @class is OdcmEntityClass select @class as OdcmEntityClass)) { @class.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p => { p.Class = @class; p.Type = classes.RandomElement(); }))); } foreach (var @class in classes) { @class.Properties.AddRange(Any.Sequence(i => Any.OdcmProperty(p => { p.Class = @class; p.Type = classes.RandomElement(); }))); } classes[0].Base = classes[1]; if (!classes[1].Derived.Contains(classes[0])) { classes[1].Derived.Add(classes[0]); } retVal.Types.AddRange(classes); if (config != null) { config(retVal); } return(retVal); }