21 Ekim 2014 Salı

Enum casting

 public enum SocialType
        {
            None=0,
            Facebook=1,
            Twitter=2,
            Instagram=3,
            Google=4
        }
       
        public static byte GetSocialType(string type)
        {
            var test = (SocialType)Enum.Parse(typeof(SocialType), type);
            return (byte)test;
        }

21 Şubat 2014 Cuma

Visual Studio Açmadan cs uzantılı dosyaları çalıştırmak.

Bir c# ile yazdığınız bir console programını Visual Studio açmadan çalıştırabilmek.

public class Program{

public static void Main(){

System.Console.WriteLine("Selam kullanıcı, naber?");
System.Console.ReadKey();
}
}

örnek olarak “Selam kullanıcı, naber?” yazacak bu code çalıştığında console'a, kodu çalıştırabilmek için cmd.exe (kısa yoldan: ctrl+r >>“cmd”>> run)

C:\Windows\Microsoft.NET\Framework\v4.0.30319> csc /t:exe /out:[çıktı] [yazdığınız cs dosyası]


Programınız oluşmuş durumda şuan çalıştırmak için cmd promtpta hangi dizinde olduğunuzun önemi yok aşağıdaki gibi yazmanız yeterli.

C:\>start [çıktı]


14 Şubat 2014 Cuma

ActionFilterAttribute Methods

ActionFilterAttributes Methods:
Filtre bir attribute oluşturmak için ActionFilterAttribute sınıfından bir Attribute türetmeniz gerekiyor.
ActionFilterAttribute sınıfının 2 methodu bunuyor duruma göre override edilmesi gereken bunlar:
-OnActionExecuted()
-OnActionExecuting()
OnActionExecuted:
Attribute’ün kullanıldığı methodaki eylemler gerçekleştikten sonra çağrılır. Bu method çağrılırken HttpActionExecutedContext(Actionları temsil eden http çalıştırıldı context’tidir.) türünde bir parametre alır.
public virtual void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
OnActionExecuting:
public virtual void OnActionExecuting(HttpActionContext actionContext)
Action gerçekleştireceği eylemleri gerçekleştirmeden önce çağrılır.
HttpActionContext türünde bir actionContext nesnesi alır. Bu nesne Çalışmakta olan Action’ın bilgilerini barındırır.
Bu Class’la tanışmam ve kullandığım yerler:
İlk olarak karşılaştığım sorunu anlatayım Internet Explorerde yaptığım facebook uygulamalarının çalışabilmesi için kullanmam gereken P3P ile ilgili bunu htmlde her sayfaya eklemem gerekiyordu bunun yerine bunu nasıl daha hızlı ve effective yapabilirim diye ataştırırken aşağıdaki örneği buldum.
using System.Web;
/// <summary>
/// Privacy Preferences Project (P3P) serve a compact policy (a “p3p” HTTP header) for all requests
/// P3P provides a standard way for Web sites to communicate about their practices around the collection,
/// use, and distribution of personal information. It’s a machine-readable privacy policy that can be
/// automatically fetched and viewed by users, and it can be tailored to fit your company’s specific policies.
/// </summary>
/// <remarks>
/// More info http://www.oreillynet.com/lpt/a/1554
/// </remarks>
using System.Web.Mvc;
public class P3PAttribute : ActionFilterAttribute
{
/// <summary>
/// On Action Executing add a compact policy “p3p” HTTP header
/// </summary>
/// <param name=“filterContext”></param>
public override void OnActionExecuting(ActionExecutingContextfilterContext)
{
HttpContext.Current.Response.AddHeader(“p3p”“CP=\”IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\”");
base.OnActionExecuting(filterContext);
}
}
Daha sonra bu login olup olmadığımı kontrol edebileceğim bir filtre yazabilir miyim diye düşündüm login olduktan sonra görüntülemem gereken sayfaların ActionResult’lardan önce gerekli attribute’ü yazmam yetti.
using SosyalUrun.Core;
using System.Web;
using System.Web.Mvc;
namespace SosyalUrun.Management.Helper
{
public classADMINAttribute:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContextfilterContext)
{
if (SessionHelper.GetSession(SessionHelper.AdminSession==null)
{
HttpContext.Current.Response.Redirect(“/Manage/”);
}
base.OnActionExecuting(filterContext);
}
}
}
Attribute kullanımı:
i- Controller’ınız içindeki bütün ActionResultlar için geçerli olsun istiyorsanız aşağıdaki şekiliyle kullanabilirsiniz.
[P3P]
public class PageController : Controller
{
}
ii-Controller içindeki Belli ActionResultlar için geçerli olsun istiyorsanız aşağıdaki gibi de kullanabilirsiniz.
public classPageController : Controller
{
[P3P]
public ActionResult Index()
{
return View();
}
}