bfr/BFR/Helpers/Extensions.cs
adroslice ae7c3a3fff OperationMode overhaul, improved event handling, fixed properties
- OperationMode now designed and implemented in a way that allows serialization
- Modes are now defined using an enumeration with with attributes decorated values
- MainWindow.xaml.cs's event handlers now only listen for changes to certain properties
- Property naming conventions fixed
- AvaloniaProperties are now public + static + readonly
2019-11-21 19:07:46 +01:00

42 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace BFR.Helpers
{
public static class IListExtensions
{
public static void ReplaceAll<T>(this IList<T> list, IEnumerable<T> replacement)
{
list.Clear();
foreach (var t in replacement)
list.Add(t);
}
}
public static class StringExtensions
{
public static string Replace(this string input, string pattern, string replacement, bool useRegex = false, bool useRegexReplace = false) =>
Regex.Replace(input,
useRegex ? pattern : Regex.Escape(pattern),
useRegexReplace ? replacement : replacement.Replace("$", "$$"));
public static bool RegexContains(this string input, string pattern)
{
try { return Regex.IsMatch(input, pattern); }
catch(Exception) { return false; }
}
}
public static class EnumExtensions
{
public static T GetAttribute<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;
}
}
}