From 7b298b591b74e2053cb7fa3ef0caae27a3062733 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Tue, 27 Nov 2018 15:14:36 +0000 Subject: [PATCH] BosMon Webserver first Running Version --- Helper.cs | 98 +++++++++++++++++++++++++++++++++++++ Properties/AssemblyInfo.cs | 8 ++- Utils.csproj | 1 + bin/Release/Utils.dll | Bin 29696 -> 31232 bytes 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 Helper.cs diff --git a/Helper.cs b/Helper.cs new file mode 100644 index 0000000..b513754 --- /dev/null +++ b/Helper.cs @@ -0,0 +1,98 @@ +using System; +using System.ComponentModel; +using System.Reflection; + +namespace BlubbFish.Utils { + public static class Helper { + #region PropertyHelper + public static Boolean HasProperty(this Object o, String type) { + Type t = o.GetType(); + foreach (PropertyInfo item in t.GetProperties()) { + if (item.Name == type) { + return true; + } + } + return false; + } + + public static Object GetProperty(this Object o, String name) { + PropertyInfo prop = o.GetType().GetProperty(name); + if (prop.CanRead) { + return prop.GetValue(o); + } + return null; + } + + public static void SetProperty(this Object o, String name, String value) { + PropertyInfo prop = o.GetType().GetProperty(name); + if (prop.CanWrite) { + if (prop.PropertyType == typeof(Boolean) && Boolean.TryParse(value, out Boolean vb)) { + prop.SetValue(o, vb); + } else if (prop.PropertyType == typeof(Byte) && Byte.TryParse(value, out Byte v8)) { + prop.SetValue(o, v8); + } else if (prop.PropertyType == typeof(Int32) && Int32.TryParse(value, out Int32 v32)) { + prop.SetValue(o, v32); + } else if (prop.PropertyType == typeof(Single) && Single.TryParse(value, out Single vs)) { + prop.SetValue(o, vs); + } else if (prop.PropertyType == typeof(Double) && Double.TryParse(value, out Double vd)) { + prop.SetValue(o, vd); + } else if (prop.PropertyType == typeof(Int64) && Int64.TryParse(value, out Int64 v64)) { + prop.SetValue(o, v64); + } else if (prop.PropertyType.BaseType == typeof(Enum)) { + try { + prop.SetValue(o, Enum.Parse(prop.PropertyType, value)); + } catch (Exception) { } + } + } + } + #endregion + + #region InterfaceHelper + public static Boolean HasInterface(this Type o, Type interf) { + foreach (Type item in o.GetInterfaces()) { + if (item == interf) { + return true; + } + } + return false; + } + + public static Boolean HasAbstract(this Type o, Type type) { + if (o.BaseType == type) { + return true; + } + return false; + } + #endregion + + #region StringHelper + public static String GetEnumDescription(Enum value) { + FieldInfo fi = value.GetType().GetField(value.ToString()); + + DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); + + if (attributes != null && attributes.Length > 0) { + return attributes[0].Description; + } else { + return value.ToString(); + } + } + + public static String ToUpperLower(this String s) { + if (s.Length == 0) { + return ""; + } + if (s.Length == 1) { + return s.ToUpper(); + } + return s[0].ToString().ToUpper() + s.Substring(1).ToLower(); + } + + public static void WriteError(String text) { + Console.ForegroundColor = ConsoleColor.Red; + Console.Error.WriteLine("ERROR: " + text); + Console.ResetColor(); + } + #endregion + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index cd49385..ed13983 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -32,5 +32,9 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.3")] -[assembly: AssemblyFileVersion("1.1.3")] +[assembly: AssemblyVersion("1.4.0")] +[assembly: AssemblyFileVersion("1.4.0")] + +/** + * 1.4.0 Add Helper to Utils + */ diff --git a/Utils.csproj b/Utils.csproj index 83cfa61..770adde 100644 --- a/Utils.csproj +++ b/Utils.csproj @@ -45,6 +45,7 @@ + diff --git a/bin/Release/Utils.dll b/bin/Release/Utils.dll index 1bc8581fafdf5f93880e18246761c07961320660..a28cadabaa989fedefb94fdd42f3641a657ad086 100644 GIT binary patch literal 31232 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 literal 29696 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 B9RvUX