using FWindSoft.SystemExtensions;
using System;
using System.Linq;
using System.Reflection;
namespace FWindSoft.Revit.ExtensibleStorage
{
///
/// 内部应用
///
internal class InEnumUtil
{
///
/// 获取枚举的guid
///
///
///
public static Guid GetGuid(Enum en)
{
var type = en.GetType();
string allPath = type.FullName + en.ToString();
return allPath.ToGuid();
}
internal static SchemaItem CreateSchemaItem(Enum en)
{
SchemaItem item = new SchemaItem();
FieldInfo fieldInfo = en.GetType().GetField(en.ToString());
var fileNameAttribute = fieldInfo.GetCustomAttribute();
item.FileName = fileNameAttribute?.Name?? en.ToString();
var schemeNameAttribute = fieldInfo.GetCustomAttribute();
item.SchemaName = schemeNameAttribute?.Name ?? en.ToString();
var schemeGuidAttribute = fieldInfo.GetCustomAttribute();
if (schemeGuidAttribute?.Guid == null)
{
item.SchemaGuid = GetGuid(en);
}
else
{
item.SchemaGuid = new Guid(schemeGuidAttribute?.Guid);
}
return item;
}
}
}