临时写的一个通用必填判断方法
private static ConcurrentDictionary<string, object> dictCache = new ConcurrentDictionary<string, object>();
#region 得到类里面的属性集合
/// <summary>
/// 得到类里面的属性集合
/// </summary>
/// <param name="type"></param>
/// <param name="columns"></param>
/// <returns></returns>
public static PropertyInfo[] GetProperties(Type type, string[] columns = null)
{
PropertyInfo[] properties = null;
if (dictCache.ContainsKey(type.FullName))
{
properties = dictCache[type.FullName] as PropertyInfo[];
}
else
{
properties = type.GetProperties();
dictCache.TryAdd(type.FullName, properties);
}
if (columns != null && columns.Length > 0)
{
// 按columns顺序返回属性
var columnPropertyList = new List<PropertyInfo>();
foreach (var column in columns)
{
var columnProperty = properties.Where(p => p.Name == column).FirstOrDefault();
if (columnProperty != null)
{
columnPropertyList.Add(columnProperty);
}
}
return columnPropertyList.ToArray();
}
else
{
return properties;
}
}
#endregion
/// <summary>
/// 检查是否为空
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="entity"></param>
/// <param name="columns"></param>
/// <returns></returns>
public static string CheckIsMust<T>(T entity,string[] columns)
{
string description = string.Empty;
Type type = typeof(T);
PropertyInfo[] properties = GetProperties(type, columns);
for (int columnIndex = 0; columnIndex < properties.Length; columnIndex++) {
DescriptionAttribute customAttribute = (DescriptionAttribute)Attribute.GetCustomAttribute(properties[columnIndex], typeof(DescriptionAttribute));
if (customAttribute != null)
{
string drValue = Convert.ToString(properties[columnIndex].GetValue(entity, null));
if (string.IsNullOrEmpty(drValue))
{
description = customAttribute.Description+"不能为空!";
break;
}
}
}
return description;
}
使用方式:
实体代码
/// <summary>
/// 入参
/// </summary>
public class ShipmentEntity
{
/// <summary>
/// 出货单号
/// WDN号
/// </summary>
[Description("出货单号")]
public string shipment_no { get; set; }
/// <summary>
/// 货柜号
/// 国外---集装箱号,国内---车牌号
/// </summary>
[Description("货柜号")]
public string container_no { get; set; }
/// <summary>
/// CI号
/// DN号
/// </summary>
[Description("CI号")]
public string ci_no { get; set; }
/// <summary>
/// 运输类型
/// 0:陆运 1:海运 2:空运
/// </summary>
[Description("运输类型")]
public string shipment_type { get; set; }
/// <summary>
/// 出货日期
/// </summary>
[Description("出货日期")]
public DateTime shipment_date { get; set; }
/// <summary>
/// 是否是APP
/// 0:不是 1:是 2:空
/// </summary>
[Description("APP")]
public string ship_goto { get; set; }
/// <summary>
/// 客检
/// 否:0 是:1
/// </summary>
public string custcheck { get; set; }
/// <summary>
/// 出货操作人
/// </summary>
[Description("出货操作人")]
public string shipment_operator { get; set; }
/// <summary>
/// 托盘列表
/// </summary>
public List<string> palletnos = new List<string>();
}
string description = Common.CheckIsMust<API.Model.Shipment.ShipmentEntity>(commonparameters, new string[] { "shipment_no", "container_no", "ci_no", "shipment_type", "shipment_date", "ship_goto", "shipment_operator" });
if (!string.IsNullOrEmpty(description))
{
commonResult.SetReturnFail(description);
result = base.Content(Common.SerializeResultCommon<API.Model.Shipment.ShipmentReturn>(null, commonResult), "application/json");
return result;
}
一般都是使用model验证方式,暂时只有简单的两个接口,就不整体调整了。

浙公网安备 33010602011771号