BN089-BS开发框架MVC4版/source20131023/Zephyr.Net/Zephyr.Utils/Document/Word/DocX/Charts/XElementHelpers.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Linq;
using System.Reflection;
using System.Xml.Linq;
namespace Novacode
{
internal static class XElementHelpers
{
/// <summary>
/// Get value from XElement and convert it to enum
/// </summary>
/// <typeparam name="T">Enum type</typeparam>
internal static T GetValueToEnum<T>(XElement element)
{
if (element == null)
throw new ArgumentNullException("element");
String value = element.Attribute(XName.Get("val")).Value;
foreach (T e in Enum.GetValues(typeof(T)))
{
FieldInfo fi = typeof(T).GetField(e.ToString());
if (fi.GetCustomAttributes(typeof(XmlNameAttribute), false).Count() == 0)
throw new Exception(String.Format("Attribute 'XmlNameAttribute' is not assigned to {0} fields!", typeof(T).Name));
XmlNameAttribute a = (XmlNameAttribute)fi.GetCustomAttributes(typeof(XmlNameAttribute), false).First();
if (a.XmlName == value)
return e;
}
throw new ArgumentException("Invalid element value!");
}
/// <summary>
/// Convert value to xml string and set it into XElement
/// </summary>
/// <typeparam name="T">Enum type</typeparam>
internal static void SetValueFromEnum<T>(XElement element, T value)
{
if (element == null)
throw new ArgumentNullException("element");
element.Attribute(XName.Get("val")).Value = GetXmlNameFromEnum<T>(value);
}
/// <summary>
/// Return xml string for this value
/// </summary>
/// <typeparam name="T">Enum type</typeparam>
internal static String GetXmlNameFromEnum<T>(T value)
{
if (value == null)
throw new ArgumentNullException("value");
FieldInfo fi = typeof(T).GetField(value.ToString());
if (fi.GetCustomAttributes(typeof(XmlNameAttribute), false).Count() == 0)
throw new Exception(String.Format("Attribute 'XmlNameAttribute' is not assigned to {0} fields!", typeof(T).Name));
XmlNameAttribute a = (XmlNameAttribute)fi.GetCustomAttributes(typeof(XmlNameAttribute), false).First();
return a.XmlName;
}
}
/// <summary>
后面还有 25 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
