public static void Initialize(Type type) { ChoGuard.ArgumentNotNull(type, "Type"); if (IsInitialized(type)) { return; } DoPostTypeMemberConversion(type); foreach (FieldInfo fieldInfo in ChoType.GetFields(type)) { if (!fieldInfo.IsStatic) { continue; } object fieldValue = ChoType.GetStaticFieldValue(type, fieldInfo.Name); if (fieldValue == null) { continue; } if (!(fieldValue is string) && fieldValue is IEnumerable) { foreach (object fieldItemValue in (IEnumerable)fieldValue) { if (!(fieldItemValue is IChoObjectInitializable)) { break; } ChoObjectInitializer.Initialize(fieldItemValue); } } else if (fieldValue.GetType().IsPrimitive || fieldValue is string) { } else { ChoObjectInitializer.Initialize(fieldValue); } } }