using System; using System.Diagnostics; using System.Globalization; namespace MedulaRADClassLib { static class ExtensionIEnumerable { ////// IEnumerable tipinde dizi içinde parametrede verilen metoda dizi elemanlarını ve indeksini geçirir. /// ///İçinde dönülecek dizinin tipi /// İçinde dönülecek dizi /// Dizi elemanlarının ve elemanın indeks değerinin gönderileceği metot public static void ForEachIndex(this IEnumerable e, Action del) { var i = 0; foreach (var cur in e) { del(cur, i); } } } static public class ExtensionClass { /// <summary> /// String gelen değeri "" veya string.Empty veya NULL ise /// null değeri döndürür /// </summary> /// <param name="_sGelen"> /// <returns> [DebuggerHidden] static public string IfIsNullOrEmptyConvertToNULL(this string _sGelen) { return string.IsNullOrEmpty(_sGelen) ? null : _sGelen; } /// <summary> /// String gelen değeri "" veya string.Empty veya NULL ise /// DBNull.Value değeri döndürür ki DB ye "NULL" yazılsın. /// </summary> /// <param name="_sGelen"> /// <returns> //[DebuggerHidden] static public object IfIsNullOrEmptyConvertToDbNull(this string _sGelen) { return string.IsNullOrEmpty(_sGelen) ? "NULL" : (object)"'" + _sGelen + "'"; } /// <summary> /// Object içinde s1 stringini arıyor, /// s2 stringini arıyor, /// s1 in bulunduğu pozisyona kendi uzunluğunu ekliyor, /// s2 inin pozisyonuna kadar aradaki stringi çekiyor ve /// çevirmek istenen tipe dönüştürüp geri gönderiyoruz. /// </summary> /// <typeparam name="T">Dönüştürülecek tip /// <param name="sGelen">Esas arama yapılacak string /// <param name="s1">İçinde aranacak ilk string /// <param name="s2">içinde arama yapılacak ikinci string /// <param name="_bS1Mecbur">Eğer birinci string esas string içinde mecburen bulunacaksa, bu parametre TRUE olarak gönderilmeli. /// Ve eğer ikinci string yoksa exception fırlatılacak. Bu parametre FALSE gönderilirse, ikinci string olmazsa, /// esas stringin sonuna kadar metni alacak. /// <param name="_bS2Mecbur">Eğer ikinci string esas string içinde mecburen bulunacaksa, bu parametre TRUE olarak gönderilmeli. /// Ve eğer birinci string yoksa exception fırlatılacak. Bu parametre FALSE gönderilirse, birinci string olmazsa, /// esas stringin sonuna kadar metni alacak. /// <returns>Dönen değişken tipine göre değeri [DebuggerHidden] static public T Substring (this string sGelen, string s1, string s2, bool _bS1Mecbur, bool _bS2Mecbur) where T : IConvertible { int iS1 = sGelen.IndexOf(s1) + s1.Length; int iS2 = sGelen.IndexOf(s2); if (sGelen.IndexOf(s1) == -1 && _bS1Mecbur) { throw new ArgumentOutOfRangeException("s1", "Birinci string parametrenin esas string içinde mecburen bulunması gerekiyor ama yok."); } if (sGelen.IndexOf(s2) == -1 && _bS2Mecbur) { throw new ArgumentOutOfRangeException("s2", "İkinci string parametrenin esas string içinde mecburen bulunması gerekiyor ama yok."); } int iBas = (_bS1Mecbur) ? iS1 : 0; int iSon = (_bS2Mecbur) ? iS2 : (0 <= (iS2 - iS1) ? (iS2 - iS1) : sGelen.Length - iS1); return sGelen.Substring(iBas, iSon).To (); //return default(T); } /// <summary> /// Eğer _bOnceSonra = TRUE ise /// String içinde s1 i arıyor onun uzunluğundan sonra başlamak üzere kalan tüm stringi /// dönüş tipine göre çevirip değeri geri gönderiyoruz. /// <example> /// string s = "cem|1234" -> s.Substring>int<("|"); /// dersek... int tipinde 1234 alırız. /// </example> /// Eğer _bOnceSonra = FALSE ise /// String içinde s1 i arıyor ve s1 in bulunduğu yere kadar başından itibaren tüm stringi /// dönüş tipine göre çevirip değeri geri gönderiyoruz. /// <example> /// string s = "cem|1234" -> s.Substring>int<("|"); /// dersek... int tipinde cem| alırız. /// </example> /// </summary> /// <typeparam name="T">Dönüş tipi /// <param name="sGelen">Esas string /// <param name="s1">Esas içinde aranacak string /// <param name="_bOnceSonra">Eğer true ise sonrasını alır, false ise öncesini alır /// <returns>Dönen değer [DebuggerHidden] static public T Substring (this string sGelen, string s1, bool _bOnceSonra) where T : IConvertible { int iS1 = sGelen.IndexOf(s1) + s1.Length; if (iS1 > -1 && _bOnceSonra) { return sGelen.Substring(iS1).To (); } if (iS1 > -1 && _bOnceSonra == false) { return sGelen.Substring(0, iS1).To (); } return default(T); } /// <summary> /// İçinde aranan string eğer ilk string içinde yoksa empty string döner /// Eğer varsa ve pozisyonu içinde aranan stringin uzunluğundan küçük /// </summary> /// <param name="sGelen"> /// <param name="sAranan"> /// <returns> [DebuggerHidden] static public string SubStrVeArananLen(this string sGelen, string sAranan) { int iIndexOf = sGelen.IndexOf(sAranan); if (iIndexOf < 0) { return string.Empty; } int iLen = iIndexOf + sAranan.Length; if (iLen > sGelen.Length) { return string.Empty; } return sGelen.Substring(iLen); } /// <summary> /// Gonderilen string içinde aranılan cKarakter ifadesinin kaç kez geçtiğini döndürür. /// </summary> /// <param name="sGelen"> /// <param name="cKarakter"> /// <returns> [DebuggerHidden] static public int KacAdetVar(this string sGelen, char cKarakter) { int iCount = 0; for (int i = 0; i < sGelen.Length; i++) { if (sGelen[i] == cKarakter) { iCount++; } } return iCount; } /// <summary> /// Object cinsinden ve içinde dd-mm-yyyy veya daha farklı formatta stringi DateTime olarak dondurur. /// </summary> /// <param name="objGelen"> /// <param name="sFormat"> /// <returns> [DebuggerHidden] static public DateTime ParseExact(this object objGelen, string sFormat) { return DateTime.ParseExact(objGelen.ToString(), sFormat, new DateTimeFormatInfo()); } /// <summary> /// Gonderilen tarihde ayin ilk günü gelir. /// </summary> /// <param name="dtGelen"> /// <returns> [DebuggerHidden] static public DateTime AyinIlkGunTarihi(this DateTime dtGelen) { return new DateTime(dtGelen.Year, dtGelen.Month, 1); } /// <summary> /// Gonderilen tarihin ay ve yılına bakılarak, o ayın son gunu alınır ve son gune gore tarih geri dondurulur. /// </summary> /// <param name="dtGelen"> /// <returns> [DebuggerHidden] static public DateTime AyinSonGunTarihi(this DateTime dtGelen) { return new DateTime(dtGelen.Year, dtGelen.Month, DateTime.DaysInMonth(dtGelen.Year, dtGelen.Month)); } [DebuggerHidden] static public Int32 ToInt(this string sGelen) { if (string.IsNullOrEmpty(sGelen)) { throw (new ArgumentNullException("Int değere dönüştürülmek istenen STRING boş geldi.")); } return Convert.ToInt32(sGelen); } [DebuggerHidden] static public bool Sayimi(this object value) { string s = value.ToString(); if (s.Length == 0) { return false; } for (int i = 0; i < s.Length; i++) { if (!Char.IsDigit(s[i])) { return false; } } return true; } [DebuggerHidden] static public bool IsNullOrEmpty (this T obj) { if (typeof(T) == typeof(System.String)) { if (obj == null) { return true; } return string.IsNullOrEmpty(obj.ToString()); } return (Equals(obj, default(T)) || (obj.ToString() == "")); } [DebuggerHidden] static public bool IsNullOrEmpty (this T[] obj) { bool sonuc = true; for (int i = 0; i < obj.Length; i++) { if (i == 0) { sonuc = (Equals(obj[i], default(T)) || (obj[i].ToString() == "")); } else { sonuc = (sonuc && (Equals(obj[i], default(T)) || (obj[i].ToString() == ""))); } } return sonuc; } [DebuggerHidden] public static T To (this object value) where T : IConvertible { if (value == DBNull.Value) return default(T); if (typeof(T) == typeof(bool)) return (T)Convert.ChangeType(Convert.ToInt32(value), typeof(T)); if (typeof(T) == typeof(string)) return (T)Convert.ChangeType(Convert.ToString(value).Trim(), typeof(T)); return (T)Convert.ChangeType(value, typeof(T)); } } }
Aklımda Kalası Kelimeler
* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
14 Ocak 2010 Perşembe
Extension Class
Extension Class
Kaydol:
Kayıtlar (Atom)