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));
}
}