using System; using System.Collections.Generic; using System.Text; namespace Apewer.Source { /// 表示在解析数据模型过程中发生的错误。 [Serializable] public class ModelException : Exception { const string EmptyMessage = "(无消息)"; string _msg = null; Type _model = null; /// 获取描述当前异常的消息。 public override string Message { get => _msg; } /// 数据模型的类型。 public Type Model { get => _model; } /// 初始化 类的新实例。 /// 描述当前异常的消息。 /// 数据模型的类型。 public ModelException(string message, Type model = null) { _msg = string.IsNullOrEmpty(message) ? EmptyMessage : message; _model = model; } /// 表示数据模型类型无效的异常实例。 public static ArgumentNullException InvalidType() => new ArgumentNullException("数据模型的类型无效。"); /// 表示数据模型结构无效的异常实例。 /// 数据模型。 public static ModelException InvalidStructure(Type model) { if (model == null) return new ModelException("数据模型的类型无效。"); return new ModelException($"类型 <{model.Name}> 的数据模型结构无效。"); } /// 表示表名称无效的异常实例。 /// 数据模型。 public static ModelException InvalidTableName(Type model) { if (model == null) return new ModelException("数据模型的类型无效。"); return new ModelException($"类型 <{model.Name}> 不包含表名称。"); } /// 表示丢失了 Key 字段的异常实例。 /// 数据模型。 public static ModelException MissingKey(Type model) { if (model == null) return new ModelException("数据模型的类型无效。"); return new ModelException($"类型 <{model.Name}> 不包含 Key 属性的字段。"); } /// 表示丢失了 Flag 字段的异常实例。 /// 数据模型。 public static ModelException MissingFlag(Type model) { if (model == null) return new ModelException("数据模型的类型无效。"); return new ModelException($"类型 <{model.Name}> 不包含 Flag 属性的字段。"); } /// 表示表名称无效的异常实例。 public static ModelException InvalidTableName() => InvalidTableName(typeof(TModel)); /// 表示丢失了 Key 字段的异常实例。 public static ModelException MissingKey() => MissingKey(typeof(TModel)); /// 表示丢失了 Flag 字段的异常实例。 public static ModelException MissingFlag() => MissingFlag(typeof(TModel)); } /// 表示在解析数据模型过程中发生的错误。 [Serializable] public class ModelException : ModelException { /// 初始化 类的新实例。 /// 描述当前异常的消息。 public ModelException(string message) : base(message, typeof(TModel)) { } /// 表示表名称无效的异常实例。 public static ModelException InvalidTableName() => InvalidTableName(typeof(TModel)); /// 表示丢失了 Key 字段的异常实例。 public static ModelException MissingKey() => MissingKey(typeof(TModel)); /// 表示丢失了 Flag 字段的异常实例。 public static ModelException MissingFlag() => MissingFlag(typeof(TModel)); } }