использование системы;
использование System.Collections.Generic;
используя System.Linq;
использование System.Text;
использование System.Reflection;
использование System.Data;
используя System.Data.Common;
использование System.Web.Script.Serialization;
использование System.IO;
использование System.Security.Cryptography;
использование System.ComponentModel;
использование System.Runtime.Serialization.Formatters.Binary;
использование System.xml.Serialization;
пространство имен Pub.Class {
публичный статический класс ObjectExtensions {
общедоступная статическая строка ToJson (этот объект obj) {
вернуть ToJson (объект, ноль);
}
общедоступная статическая строка ToJson (этот объект obj, IEnumerable<javaScriptConverter> jsonConverters) {
Сериализатор JavascriptSerializer = новый JavaScriptSerializer();
if (jsonConverters != null) сериализатор.RegisterConverters(jsonConverters ?? новый JavaScriptConverter[0]);
вернуть сериализатор.Serialize(obj);
}
public static T ConvertTo<T>(значение этого объекта) { return value.ConvertTo(default(T)); }
public static T ConvertTo<T>(значение этого объекта, T defaultValue) {
если (значение! = ноль) {
вар targetType = typeof (T);
преобразователь вар = TypeDescriptor.GetConverter(значение);
если (конвертер! = ноль) {
if(converter.CanConvertTo(targetType)) return (T) Converter.ConvertTo(value, targetType);
}
конвертер = TypeDescriptor.GetConverter(targetType);
если (конвертер! = ноль) {
попробуйте { if(converter.CanConvertFrom(value.GetType())) return (T) Converter.ConvertFrom(value); } ловить {}
}
}
вернуть значение по умолчанию;
}
public static T ConvertTo<T>(значение этого объекта, T defaultValue, bool ignoreException) {
если (игнорировать исключение) {
пытаться {
возвращаемое значение.ConvertTo<T>();
}
ловить {
вернуть значение по умолчанию;
}
}
возвращаемое значение.ConvertTo<T>();
}
public static int ToInt (этот объект strValue, int defValue) {int def = 0; int.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
общедоступный статический байт ToTinyInt (этот объект strValue, байт defValue) {байт def = 0; byte.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
public static short ToSmallInt (этот объект strValue, short defValue) {short def = 0; short.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
общественный статический десятичный ToDecimal (этот объект strValue, десятичный defValue) {десятичный def = 0; decimal.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
public static float ToFloat (этот объект strValue, float defValue) { float def = 0; float.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
public static Int64 ToBigInt (этот объект strValue, Int64 defValue) {Int64 def = 0; Int64.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
общественный статический десятичный ToMoney (этот объект strValue, десятичный defValue) {десятичный def = 0; decimal.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
public static int ToInteger (этот объект strValue, int defValue) {int def = 0; int.TryParse(strValue.ToString(), out def); вернуть защиту == 0? defValue: защита; }
public static bool ToBool(этот объект ExPRession, bool defValue) {
если (Выражение != ноль) {
if (string.Compare(Expression.ToString(), «true», true) == 0) возвращает true;
if (string.Compare(Expression.ToString(), «false», true) == 0) вернуть false;
if (string.Compare(Expression.ToString(), "1", true) == 0) возвращает true;
if (string.Compare(Expression.ToString(), «0», true) == 0) вернуть false;
}
вернуть defValue;
}
public static int ToInt (этот объект strValue) { return strValue.ToInt(0); }
общедоступный статический байт ToTinyInt (этот объект strValue) { return strValue.ToTinyInt(0); }
public static short ToSmallInt(этот объект strValue) { return strValue.ToSmallInt(0); }
public static decimal ToDecimal (этот объект strValue) { return strValue.ToDecimal(0); }
public static float ToFloat(этот объект strValue) { return strValue.ToFloat(0); }
public static Int64 ToBigInt (этот объект strValue) { return strValue.ToBigInt (0); }
public static decimal ToMoney(this object strValue) { return strValue.ToMoney(0); }
public static int ToInteger(этот объект strValue) { return strValue.ToInteger(0); }
public static bool ToBool(этот объект strValue) { return strValue.ToBool(false); }
общедоступный статический объект InvokeMethod (этот объект obj, строковое имя метода, параметры объекта []) {
return InvokeMethod<объект>(объект, имя метода, параметры);
}
public static T InvokeMethod<T>(этот объект obj, строковое имя метода) {
return InvokeMethod<T>(obj, имя_метода, ноль);
}
public static T InvokeMethod<T>(этот объект obj, строковое имя метода, параметры объекта []) {
тип вар = obj.GetType();
метод вар = type.GetMethod(имя метода);
if(method == null) throw new ArgumentException(string.Format("Метод '{0}' не найден.", имя_метода), имя_метода);
значение var = метод.Invoke(объект, параметры);
return (значение T? (T) значение: default(T));
}
общедоступный статический объект GetPropertyValue (этот объект obj, строка propertyName) {
return GetPropertyValue<object>(obj, propertyName, null);
}
public static T GetPropertyValue<T>(этот объект obj, string propertyName) {
return GetPropertyValue<T>(obj, propertyName, default(T));
}
public static T GetPropertyValue<T>(этот объект obj, string propertyName, T defaultValue) {
тип вар = obj.GetType();
свойство var = type.GetProperty(propertyName);
if(property == null) throw new ArgumentException(string.Format("Свойство '{0}' не найдено.", propertyName), propertyName);
значение var = property.GetValue(obj, null);
return (значение равно T? (T) value: defaultValue);
}
public static void SetPropertyValue(этот объект obj, строковое имя свойства, значение объекта) {
тип вар = obj.GetType();
свойство var = type.GetProperty(propertyName);
if(property == null) throw new ArgumentException(string.Format("Свойство '{0}' не найдено.", propertyName), propertyName);
property.SetValue(объект, значение, ноль);
}
public static T GetAttribute<T>(этот объект obj), где T: Attribute {
вернуть GetAttribute<T>(obj, true);
}
public static T GetAttribute<T>(этот объект obj, bool includeInherited), где T : Attribute {
var type = (obj as Type ?? obj.GetType());
атрибуты var = type.GetCustomAttributes(typeof(T), includeInherited);
if((атрибуты!= null) && (attributes.Length > 0)) {
return (атрибуты [0] как T);
}
вернуть ноль;
}
public static IEnumerable<T> GetAttributes<T>(этот объект obj), где T : Attribute {
вернуть GetAttributes<T>(obj);
}
public static IEnumerable<T> GetAttributes<T>(этот объект obj, bool includeInherited), где T : Attribute {
var type = (obj as Type ?? obj.GetType());
foreach(атрибут var в type.GetCustomAttributes(typeof(T), includeInherited)) {
if(атрибут T) возвращает атрибут возврата (T);
}
}
public static bool IsType(этот объект obj, тип типа) {
вернуть obj.GetType().Equals(тип);
}
public static T ToType<T>(значение этого объекта) { return (T)value; }
public static bool IsArray(этот объект obj) {
return obj.IsType(typeof(System.Array));
}
public static bool IsDBNull(этот объект obj) {
return obj.IsType(typeof(DBNull));
}
public static byte[] Serialize(значение этого объекта) {
MemoryStream мс = новый MemoryStream();
BinaryFormatter bf1 = новый BinaryFormatter();
bf1.Serialize(мс, значение);
вернуть ms.ToArray();
}
public static void CheckOnNull(этот объект @this, строковое имя параметра) {
if(@this.IsNull()) выдает новое исключение ArgumentNullException(parameterName);
}
public static void CheckOnNull(этот объект @this, строковое имя параметра, строковое сообщение) {
if(@this.IsNull()) выдает новое исключение ArgumentNullException(имя_параметра, сообщение);
}
public static bool IsNull(этот объект @this) {
вернуть @this == null;
}
public static bool IsNotNull(этот объект @this) {
вернуть [email protected] ();
}
public static T UnsafeCast<T>(значение этого объекта) {
возвращаемое значение.IsNull() ? по умолчанию (T): (T) значение;
}
public static T SafeCast<T>(значение этого объекта) {
возвращаемое значение равно T? value.UnsafeCast<T>(): default(T);
}
public static bool InstanceOf<T>(значение этого объекта) {
возвращаемое значение — Т;
}
public static void SerializeXmlFile(этот объект o, строка fileName) {
Сериализатор XmlSerializer = новый XmlSerializer(o.GetType());
if (!FileFolder.FileExists(fileName)) return;
используя (поток FileStream = новый FileStream(fileName, FileMode.Create, Fileaccess.Write)) serializer.Serialize(stream, o);
}
public static T DeserializeXmlFile<T>(string fileName) {
К;
Сериализатор XmlSerializer = новый XmlSerializer(typeof(T));
используя (поток FileStream = новый FileStream(fileName, FileMode.Open, FileAccess.Read)) o = (T)serializer.Deserialize(stream);
вернуться о;
}
общедоступная статическая строка SerializeXml(этот объект o) {
Сериализатор XmlSerializer = новый XmlSerializer(o.GetType());
StringBuilder stringBuilder = новый StringBuilder();
использование (TextWriter textWriter = new StringWriter(stringBuilder)) seriesizer.Serialize(textWriter, o);
вернуть stringBuilder.ToString();
}
public static T DeserializeXml<T>(эта строка xml) {
return (T)Deserialize(xml, typeof(T));
}
общедоступный статический объект Deserialize (строка xml, тип типа) {
объект о;
Сериализатор XmlSerializer = новый XmlSerializer(тип);
использование (TextReader textReader = new StringReader(xml)) o = seriesizer.Deserialize(textReader);
вернуться о;
}
public static void Write(this object o) { Msg.Write(o); }
public static void WriteEnd(этот объект o) { Msg.WriteEnd(o); }
}
}