Initial Commit

This commit is contained in:
Ben
2015-06-04 18:15:54 +01:00
commit 446fe51843
125 changed files with 10792 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
using System;
using System.ComponentModel;
namespace Filtration.Extensions
{
internal static class EnumHelper
{
public static T GetAttributeOfType<T>(this Enum enumVal) where T : Attribute
{
var type = enumVal.GetType();
var memInfo = type.GetMember(enumVal.ToString());
var attributes = memInfo[0].GetCustomAttributes(typeof(T), false);
return (attributes.Length > 0) ? (T)attributes[0] : null;
}
public static string GetAttributeDescription(this Enum enumValue)
{
var attribute = enumValue.GetAttributeOfType<DescriptionAttribute>();
return attribute == null ? String.Empty : attribute.Description;
}
public static T GetEnumValueFromDescription<T>(string description)
{
var fis = typeof(T).GetFields();
foreach (var fi in fis)
{
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Length > 0 && attributes[0].Description == description)
return (T)Enum.Parse(typeof(T), fi.Name);
}
throw new Exception("Not found");
}
}
}

View File

@@ -0,0 +1,65 @@
using System;
using System.ComponentModel;
using System.Linq;
using System.Windows.Markup;
namespace Filtration.Extensions
{
internal class EnumerationExtension : MarkupExtension
{
private Type _enumType;
public EnumerationExtension(Type enumType)
{
if (enumType == null) throw new ArgumentNullException("enumType");
EnumType = enumType;
}
public Type EnumType
{
get
{
return _enumType;
}
private set
{
if (_enumType == value) return;
var enumType = Nullable.GetUnderlyingType(value) ?? value;
if (enumType.IsEnum == false) throw new ArgumentException("Type must be an Enum.");
_enumType = value;
}
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
var enumValues = Enum.GetValues(EnumType);
return (from object enumValue in enumValues
select new EnumerationMember { Value = enumValue, Description = GetDescription(enumValue) }).ToArray
();
}
private string GetDescription(object enumValue)
{
var descriptionAttribute =
EnumType.GetField(enumValue.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false)
.FirstOrDefault() as DescriptionAttribute;
return descriptionAttribute != null ? descriptionAttribute.Description : enumValue.ToString();
}
public class EnumerationMember
{
public string Description { get; set; }
public object Value { get; set; }
}
}
}