接口文件

This commit is contained in:
“wanyongkang”
2024-04-10 13:55:27 +08:00
parent fff6bee06a
commit ed3b2c653e
3190 changed files with 268248 additions and 1 deletions

View File

@@ -0,0 +1,144 @@
using Nelibur.ObjectMapper;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Dynamic;
using System.Linq;
using System.Threading;
namespace Hncore.Infrastructure.Extension
{
public static class ObjectExtension
{
/// <summary>
/// 将对象[主要是匿名对象]转换为dynamic
/// </summary>
public static dynamic ToDynamic(this object obj, decimal defaultVal)
{
decimal result;
if (obj != null)
if (decimal.TryParse(obj.ToString(), out result))
return result;
else
return defaultVal;
return defaultVal;
}
// This extension method is broken out so you can use a similar pattern with
// other MetaData elements in the future. This is your base method for each.
public static T GetAttribute<T>(this object value) where T : Attribute
{
var type = value.GetType();
var memberInfo = type.GetMember(value.ToString());
if (!memberInfo.Any())
{
return null;
}
var attributes = memberInfo[0].GetCustomAttributes(typeof(T), false);
return (T) attributes[0];
}
// This method creates a specific call to the above method, requesting the
// Description MetaData attribute.
public static string GetDescription(this object value)
{
var desAttribute = value.GetAttribute<DescriptionAttribute>();
if (desAttribute != null)
{
return desAttribute.Description;
}
var displayAttribute = value.GetAttribute<DisplayAttribute>();
if (displayAttribute != null)
{
return displayAttribute.Name ?? displayAttribute.Description;
}
return "";
}
#region key对应枚举的值value对应枚举的注释
/// <summary>
/// 得到枚举字典key对应枚举的值value对应枚举的注释
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <returns></returns>
public static Dictionary<Enum, string> ToDescriptionDictionary<TEnum>()
{
Array values = Enum.GetValues(typeof(TEnum));
Dictionary<Enum, string> nums = new Dictionary<Enum, string>();
foreach (Enum value in values)
{
nums.Add(value, GetDescription(value));
}
return nums;
}
#endregion
#region string属性执行Trim()
/// <summary>
/// 对象string属性执行Trim()
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static T ObjectStrTrim<T>(this T t) where T:new ()
{
if (t != null)
{
foreach (var pi in t.GetType().GetProperties())
{
if (pi.PropertyType.Equals(typeof(string)) && pi.GetValue(t, null) != null)//判断属性的类型是不是String
{
pi.SetValue(t, pi.GetValue(t, null).ToString().Trim(), null);//给泛型的属性赋值
}
}
}
return t;
}
#endregion
#region
public static T save<T>(this T obj,string key) where T:class,new()
{
Dictionary<string, object> dic = c.Value ?? new Dictionary<string, object>();
dic.Add(key,obj);
c.Value = dic;
return obj;
}
public static AsyncLocal<Dictionary<string,Object>> c=new AsyncLocal<Dictionary<string, Object>>();
#endregion
#region
public static T MapTo<T>(this Object model)
{
var productDto = TinyMapper.Map<T>(model);
return productDto;
}
public static IEnumerable<T> MapsTo<T>(this Object model)
{
var generic = model.GetType().GetGenericTypeDefinition();
if (generic == typeof(List<>))
{
return TinyMapper.Map<List<T>>(model);
}
if (generic == typeof(Collection<>))
{
return TinyMapper.Map<Collection<T>>(model);
}
throw new Exception("不合法的转换");
}
#endregion
}
}