시스템 사용;
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){
return ToJson(obj, null);
}
공개 정적 문자열 ToJson(이 개체 obj, IEnumerable<javaScriptConverter> jsonConverters) {
JavascriptSerializer 직렬 변환기 = 새로운 JavaScriptSerializer();
if (jsonConverters != null) serializer.RegisterConverters(jsonConverters ?? new JavaScriptConverter[0]);
return serializer.Serialize(obj);
}
public static T ConvertTo<T>(이 개체 값) { return value.ConvertTo(default(T)); }
public static T ConvertTo<T>(이 개체 값, T defaultValue) {
if(값 != null) {
var targetType = typeof(T);
var 변환기 = TypeDescriptor.GetConverter(값);
if(변환기 != null) {
if(converter.CanConvertTo(targetType)) return (T) 변환기.ConvertTo(value, targetType);
}
변환기 = TypeDescriptor.GetConverter(targetType);
if(변환기 != null) {
try { if(converter.CanConvertFrom(value.GetType())) return (T) 변환기.ConvertFrom(값); } 잡다 {}
}
}
기본값을 반환합니다.
}
public static T ConvertTo<T>(this 개체 값, T defaultValue, boolignoreException) {
if(ignoreException) {
노력하다 {
반환 값.ConvertTo<T>();
}
잡다 {
기본값을 반환합니다.
}
}
반환 값.ConvertTo<T>();
}
공개 정적 int ToInt(이 개체 strValue, int defValue) { int def = 0; int.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공용 정적 바이트 ToTinyInt(이 개체 strValue, 바이트 defValue) { 바이트 def = 0; byte.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
public static short ToSmallInt(this object strValue, short defValue) { short def = 0; short.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공개 정적 십진수 ToDecimal(이 개체 strValue, 십진수 defValue) { 십진수 def = 0; 소수.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공개 정적 부동 ToFloat(이 개체 strValue, 부동 defValue) { 부동 def = 0; float.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공개 정적 Int64 ToBigInt(이 개체 strValue, Int64 defValue) { Int64 def = 0; Int64.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공개 정적 십진수 ToMoney(이 개체 strValue, 십진수 defValue) { 십진수 def = 0; 소수.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공개 정적 int ToInteger(이 개체 strValue, int defValue) { int def = 0; int.TryParse(strValue.ToString(), out def); def == 0을 반환합니까? def값 : def; }
공개 정적 bool ToBool(이 개체 ExPRession, bool defValue) {
if (표현식 != null) {
if (string.Compare(Expression.ToString(), "true", true) == 0) return true;
if (string.Compare(Expression.ToString(), "false", true) == 0) return false;
if (string.Compare(Expression.ToString(), "1", true) == 0) return true;
if (string.Compare(Expression.ToString(), "0", true) == 0) return false;
}
defValue를 반환;
}
public static int ToInt(this object strValue) { return strValue.ToInt(0); }
공용 정적 바이트 ToTinyInt(이 개체 strValue) { return strValue.ToTinyInt(0); }
public static short ToSmallInt(this object strValue) { return strValue.ToSmallInt(0); }
공개 정적 십진수 ToDecimal(이 개체 strValue) { return strValue.ToDecimal(0); }
공개 정적 부동 ToFloat(이 개체 strValue) { return strValue.ToFloat(0); }
public static Int64 ToBigInt(this object strValue) { return strValue.ToBigInt(0); }
공개 정적 십진수 ToMoney(이 개체 strValue) { return strValue.ToMoney(0); }
public static int ToInteger(this object strValue) { return strValue.ToInteger(0); }
public static bool ToBool(this object strValue) { return strValue.ToBool(false); }
공용 정적 개체 InvokeMethod(이 개체 obj, 문자열 methodName, params 개체[] 매개 변수) {
return InvokeMethod<object>(obj, methodName, 매개변수);
}
public static T InvokeMethod<T>(이 개체 obj, 문자열 methodName) {
return InvokeMethod<T>(obj, methodName, null);
}
public static T InvokeMethod<T>(이 개체 obj, 문자열 methodName, params 개체[] 매개 변수) {
var 유형 = obj.GetType();
var 메소드 = type.GetMethod(메소드이름);
if(method == null) throw new ArgumentException(string.Format("'{0}' 메소드를 찾을 수 없습니다.", methodName), methodName);
var value = method.Invoke(obj, 매개변수);
return (값은 T ?(T) 값: default(T));
}
공용 정적 개체 GetPropertyValue(이 개체 obj, 문자열 propertyName) {
return GetPropertyValue<객체>(obj, propertyName, null);
}
public static T GetPropertyValue<T>(이 개체 obj, 문자열 propertyName) {
return GetPropertyValue<T>(obj, propertyName, default(T));
}
public static T GetPropertyValue<T>(이 개체 obj, 문자열 propertyName, T defaultValue) {
var 유형 = obj.GetType();
var 속성 = type.GetProperty(propertyName);
if(property == null) throw new ArgumentException(string.Format("'{0}' 속성을 찾을 수 없습니다.", propertyName), propertyName);
var value = property.GetValue(obj, null);
return(값은 T ?(T) 값: defaultValue);
}
public static void SetPropertyValue(이 개체 obj, 문자열 propertyName, 개체 값) {
var 유형 = obj.GetType();
var 속성 = type.GetProperty(propertyName);
if(property == null) throw new ArgumentException(string.Format("'{0}' 속성을 찾을 수 없습니다.", propertyName), propertyName);
property.SetValue(obj, value, null);
}
public static T GetAttribute<T>(이 객체 obj) 여기서 T : 속성 {
return GetAttribute<T>(obj, true);
}
public static T GetAttribute<T>(이 개체 obj, bool includeInherited) 여기서 T : 속성 {
var type = (obj as Type ?? obj.GetType());
var 속성 = type.GetCustomAttributes(typeof(T), includeInherited);
if((속성 != null) && (속성.길이 > 0)) {
return(속성[0]을 T로);
}
null을 반환;
}
public static IEnumerable<T> GetAttributes<T>(이 개체 obj) 여기서 T : 속성 {
GetAttributes<T>(obj)를 반환합니다.
}
public static IEnumerable<T> GetAttributes<T>(이 개체 obj, bool includeInherited) 여기서 T : 속성 {
var type = (obj as Type ?? obj.GetType());
foreach(type.GetCustomAttributes(typeof(T), includeInherited)의 var 속성) {
if(속성이 T) return (T) 속성;
}
}
public static bool IsType(이 객체 obj, 유형 유형) {
return obj.GetType().Equals(type);
}
public static T ToType<T>(이 개체 값) { return (T)value; }
공개 정적 bool IsArray(이 개체 obj) {
return obj.IsType(typeof(System.Array));
}
공개 정적 bool IsDBNull(이 개체 obj) {
return obj.IsType(typeof(DBNull));
}
public static byte[] Serialize(이 객체 값) {
MemoryStream ms = new MemoryStream();
BinaryFormatter bf1 = 새로운 BinaryFormatter();
bf1.Serialize(ms, 값);
ms.ToArray()를 반환합니다.
}
공개 정적 무효 CheckOnNull(이 개체 @this, 문자열 매개 변수 이름) {
if(@this.IsNull()) throw new ArgumentNullException(parameterName);
}
public static void CheckOnNull(이 개체 @this, 문자열 매개변수 이름, 문자열 메시지) {
if(@this.IsNull()) throw new ArgumentNullException(parameterName, message);
}
public static bool IsNull(this object @this) {
return @this == null;
}
공개 정적 bool IsNotNull(이 개체 @this) {
return [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>(이 개체 값) {
반환 값은 T입니다.
}
public static void SerializeXmlFile(이 개체 o, 문자열 파일 이름) {
XmlSerializer serializer = new XmlSerializer(o.GetType());
if (!FileFolder.FileExists(파일이름)) return;
using (FileStream 스트림 = new FileStream(fileName, FileMode.Create, Fileaccess.Write)) serializer.Serialize(stream, o);
}
공개 정적 T DeserializeXmlFile<T>(string fileName) {
에게;
XmlSerializer 직렬 변환기 = new XmlSerializer(typeof(T));
using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) o = (T)serializer.Deserialize(stream);
반환 오;
}
공개 정적 문자열 SerializeXml(이 개체 o) {
XmlSerializer serializer = new XmlSerializer(o.GetType());
StringBuilder stringBuilder = 새로운 StringBuilder();
using (TextWriter textWriter = new StringWriter(stringBuilder)) serializer.Serialize(textWriter, o);
stringBuilder.ToString()을 반환합니다.
}
공개 정적 T DeserializeXml<T>(이 문자열 xml) {
return (T)Deserialize(xml, typeof(T));
}
공개 정적 객체 Deserialize(string xml, Type type) {
객체 오;
XmlSerializer serializer = new XmlSerializer(type);
(TextReader textReader = new StringReader(xml)) 사용 o = serializer.Deserialize(textReader);
반환 오;
}
공용 정적 무효 쓰기(이 개체 o) { Msg.Write(o); }
공용 정적 무효 WriteEnd(이 개체 o) { Msg.WriteEnd(o); }
}
}