/// <summary> /// 创建随机对象 /// </summary> /// <param name="config"></param> /// <returns></returns> internal static T CreateNotNull(Config config) { if (defaultCreator != null) { return(defaultCreator()); } if (configNullCreator != null) { return(configNullCreator(config)); } if (DefaultConstructor <T> .Type == AutoCSer.Metadata.DefaultConstructorType.None) { return(default(T)); } if (isValueType) { T value = DefaultConstructor <T> .Constructor(); MemberCreator(ref value, config); return(value); } else { object historyValue = config.TryGetValue(typeof(T)); if (historyValue != null) { return((T)historyValue); } T value = config.SaveHistory(DefaultConstructor <T> .Constructor()); MemberCreator(ref value, config); return(value); } }
/// <summary> /// 创建随机对象 /// </summary> /// <param name="config"></param> /// <returns></returns> public static T Create(Config config = null) { if (defaultCreator != null) { return(defaultCreator()); } if (configCreator != null) { if (config == null) { config = Config.Default; } if (config.History == null) { return(configCreator(config)); } try { return(configCreator(config)); } finally { config.History.Clear(); } } if (DefaultConstructor <T> .Type == DefaultConstructorType.None) { return(default(T)); } T value = DefaultConstructor <T> .Constructor(); if (config == null) { config = Config.Default; } if (config.History == null) { MemberCreator(ref value, config); } else { try { MemberCreator(ref value, config); } finally { config.History.Clear(); } } return(value); }