14 Aralık 2012 Cuma

IEquatable

List yada benzeri yapılar kullanırken Contains metodu kullanıldığında basit tiplerde problem yaşanmamasına rağmen eğer kendi entity sınıfılarınızı kullanıyorsanız problemle karşılaşabilirsiniz.
Örneğin
    public class entMenuGrup
    {
        public string Adi { get; set; }
        public int Zorunlu { get; set; }
    }
şeklinde bir sınıfınız var ve bunu bir listeye ekleyeceksiniz. Ancak listede varsa eklemesin istiyorsunuz.

List<entMenuGrup> liste = new List<entMenuGrup>();
foreach (DataRow rw in this.pdtListe.Rows)
{
                string adi = rw["MENU_GRUP_ADI"].ToString();
                int zorunlu = Helper.ToIntDefault(rw["ZORUNLU"]);
                entMenuGrup grup = new entMenuGrup() { Adi = adi, Zorunlu = zorunlu };
                if (this.pGruplar.Contains(grup) == false)
                {
                    this.pGruplar.Add(grup);
                }
}

burada eğer entMenuGrup sınıfında IEquatable interface i uygulanmamışsa istediğiniz sonucu almanız biraz zor. Sınıfın olması gereken şekli

public class entMenuGrup:IEquatable<entMenuGrup>
    {
        public string Adi { get; set; }
        public int Zorunlu { get; set; }

        #region IEquatable<entMenuGrup> Members

        public bool Equals(entMenuGrup other)
        {
            if (this.Adi == other.Adi)
                return true;
            else
                return false;
        }

        #endregion
    }

21 Kasım 2012 Çarşamba

ASP.NET Server.MapPath

ASP.NET uygulamalarında bir path'in sistemdeki karşılığını almak için duruma göre değişen yöntemler kullanılabilir.
Eğer elimizde bir request var ise bu durumda HttpContext.Current.Server.MapPath("~/dizin yada dosya adı") şeklinde kullanılabilir. Fakat elimizde bir request yoksa bu durumda System.Web.Hosting.HostingEnvironment.MapPath("~/dizin yada dosya adı ") şeklinde kullanmak gerekecektir.