2025-04-24 18:31:27 +08:00

128 lines
3.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using MyCode.Project.Infrastructure.Extensions;
namespace MyCode.Project.Infrastructure.Imports
{
/// <summary>
/// 基本类型数据属性类
/// </summary>
public class ImportProperty
{
/// <summary>
/// 标题
/// </summary>
public string Caption { get; set; }
/// <summary>
/// 实体的属性名称
/// </summary>
public string EntityProp { get; set; }
/// <summary>
/// 是否允许为空,默认允许
/// </summary>
public bool IsNullable { get; set; }
/// <summary>
/// 最大长度
/// </summary>
public int MaxLength { get; set; }
/// <summary>
/// 数据类型默认为字符串只有string、int、decimal三个类型其他类型不做检查
/// </summary>
public Type ValueType { get; set; }
public ImportProperty()
{
this.IsNullable = true;
this.ValueType = typeof(string);
}
/// <summary>
/// 验证数据格式是否合法
/// </summary>
/// <param name="input">输入数据</param>
/// <param name="message">错误消息</param>
/// <returns></returns>
public bool ValidateInput(object input, ref string message)
{
if (input == null && this.IsNullable)
{
return true;
}
if (input == null && !this.IsNullable)
{
message=string.Format("[{0}]列不允许为空,必须填写数据!",this.Caption);
return false;
}
var str = input.ToString();
if (string.IsNullOrEmpty(str) && !this.IsNullable)
{
message = string.Format("[{0}]列不允许为空,必须填写数据!", this.Caption);
return false;
}
if (string.IsNullOrEmpty(str) && this.IsNullable)
{
return true;
}
if (str.Length > this.MaxLength)
{
message = string.Format("[{0}]列中的[{1}]数据超出最大长度!", this.Caption, input);
return false;
}
if (this.ValueType == typeof(decimal))
{
if (!Regex.IsMatch(str, @"^([0-9]+\.[0-9]+)|[0-9]+$"))
{
message=string.Format("[{0}]列中的[{1}]数据不是合法的数值!",this.Caption,input);
return false;
}
}
if (this.ValueType == typeof(int))
{
if (!Regex.IsMatch(str, @"^[0-9]+$"))
{
message = string.Format("[{0}]列中的[{1}]数据不是合法的整数!", this.Caption, input);
return false;
}
}
if (this.ValueType == typeof(DateTime))
{
DateTime value=DateTime.Now;
if (!DateTime.TryParse(str, out value))
{
message = string.Format("[{0}]列中的[{1}]数据不是合法的时间!", this.Caption, input);
return false;
}
}
return true;
}
/// <summary>
/// 获取对应类型的数据
/// </summary>
/// <param name="input">输入数据</param>
/// <returns></returns>
public object GetValue(object input)
{
if (input == null)
{
return null;
}
if (input.GetType() == this.ValueType)
{
return input;
}
return Convert.ChangeType(input, this.ValueType);
}
}
}