Application | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar application

Angular js nedir? Angular js 2 nedir?

02 October 2016 1 yorum

Angular js ve yeni versiyonu olan Angular js 2 arasındaki farklara hızlıca bakacak, yeni bir Angular js 2 projesi oluşturacak, browser içerisinde görüntüleyeceğiz.

Aşağıdaki youtube video‘sunda npm üzerinden angular-cli paketini indirecek, yeni bir Angular js 2 projesi oluşturacağız. Typescript ile bir Angular js 2 component‘ının nasıl yapılandırıldığını görecek, template‘in ne demek olduğuna bakacak, metadata‘nın ne olduğunu öğrenecek, bir Angular js 2 application‘ının bileşenlerini inceleyeceğiz.

Video‘da kullandığım PowerPoint sunumuna aşağıdan erişebilirsiniz.


C#’ta assembly: InternalsVisibleToAttribute kullanımı

16 July 2016 Yorum yapılmamış

C#‘ta kullanabildiğimiz erişim belirleyicileri (Access Modifiers) daha önce C# Erişim Belirleyiciler – Access Modifiers isimli makalede ele almıştım.

C# kurallarına göre, bir proje diğer projeyi referans olarak görüyorsa public erişim belirleyicili (access modifier) olan class‘lara erişebilir. internal access modifier olan class‘lara ise referans olarak gören projeden erişilemez, sadece tanımlandığı projeden erişilebilir.

Göstermesi, anlatmasından kolay olacak sanırım.

Hemen Visual Studio 2015 açalım ve yeni bir Console Application projesi oluşturalım;

Solution‘a sağ tuşla tıklayalım ve Add Project menüsünden bir tane Class Library ekleyelim ve Class1.cs dosyasının ismini VeritabaniErisimi.cs olacak şekilde değiştirelim;

Yeni oluşturduğumuz Class Library projesini Console Application projesinin referans‘larına ekleyelim;

Böylece solution‘ımız aşağıdaki gibi gözükmeli;

VeritabaniErisimi.cs dosyasını açalım ve VeritabaniErisimi class‘ının erişim belirleyicisini (Access Modifier) internal yapalım.

Console Application projesindeki Program.cs dosyasını açar ve içerisinden VeritabaniErisimi isimli class‘a erişmek istersek, internal access modifier‘ına sahip olduğu için erişemeyeceğiz.

Bu noktada proje derlenemez ve ‘VeritabaniErisimi’ is inaccessible due to its protection level hatası verir.

Çünkü; internal access modifier‘ına sahip class‘lar sadece kendi projelerinde kullanılabilir, erişebilirlerdir. Kendi projelerinin dışından erişilemezler.

Eğer istersek, Kutuphane isimli Class Library‘deki internal access modifier‘ına sahip sınıfların başka projelerden de erişilebilir olmasını sağlayabiliriz.

Bunun için namespace üstünde InternalsVisibleTo Attribute‘ünü kullanmamız lazım.

Öncelikle VeritabaniErisimi.cs dosyasını açalım (aslında Kutuphane projesindeki herhangi bir csharp dosyasını açsak olur) ve using kısmına System.Runtime.CompilerServices ekleyelim, namespace üzerine de [assembly: InternalsVisibleTo(“PROJEADI”)] yazalım.

InternalsVisibelTo attribute‘ünün parametresi olan PROJEADI, internal access modifier‘ına sahip class‘ların görünür olmasını istediğimiz projelerin adı olmalı. Örneğin;

EntityFramework Expression kullanarak esnek veritabanı sorguları

04 February 2016 1 yorum

Veritabanında gerçekleşecek sorguları yazdığımız Veritabanı Erişim Katmanı‘nda (Data Access Layer, DAL) genelde bir tablodaki kayıtları liste olarak veya aranılan kritere göre filtreleyerek döndüren methodlarımız olur.

Projenin geliştirilme süresince gelişen ihtiyaçlara göre bu methodlara çeşitli kriterlere göre filtreleme yapan yeni methodlar eklenir ve bir süre sonra işin içinden çıkılmaz bir hale gelebilir.

Expression‘ları kullanarak bu methodları azaltabiliriz.

Hemen Visual Studio‘yu açalım ve yeni bir Console Application projesi oluşturalım;

Projeye Nuget Package Manager‘ı kullanarak EntityFramework paketini ekleyelim;

Projeye TestDatabaseDataContext isminde yeni bir class ekleyelim ve içerisine aşağıdaki property tanımlamasını ekleyelim;

public class TestDatabaseDataContext : DbContext
{
	public DbSet<Country> Countries { get; set; }
}

Projeye Country isminde yeni bir class daha ekleyelim ve içerisine aşağıdaki property tanımlamalarını yapalım;

public class Country
{
	public int Id { get; set; }

	public string Name { get; set; }

	public decimal Area { get; set; }
}

Tekrar Program.cs dosyasını açalım ve içerisinde aşağıdaki iki method’u yazalım;

public static IEnumerable<Country> GetCountryList()
{
	using (var context = new TestDatabaseDataContext())
	{
		var ulkeler = (from country in context.Countries select country);

		foreach (var item in ulkeler)
		{
			yield return item;
		}
	}
}

public static Country GetCountry(int id)
{
	using (var context = new TestDatabaseDataContext())
	{
		return (from country in context.Countries select country).FirstOrDefault(e => e.Id == id);
	}
}

Böylece ülkelerin listesini ve aldığı id parametresine göre tek bir ülke’yi geri döndüren iki method‘umuz olacak. Fakat zamanla gelişen yeni talepler ile bu method’lara, isme göre ülke listesini döndüren method, belli bir yüzölçümünden büyük ülkelerin listesini döndüren method, vs eklenecektir.

Expression sınıfını kullanarak bu methodları tekilleştirebiliriz. Hemen aşağıdaki method’u ekleyelim;

public static IEnumerable<Country> GetCountryList(Expression<Func<Country, bool>> expression)
{
	using (var context = new TestDatabaseDataContext())
	{
		var ulkeler = (from country in context.Countries select country).Where(expression);

		foreach (var item in ulkeler)
		{
			yield return item;
		}
	}
}

İstediğimiz yerde artık bu methodu aşağıdaki şekillerde kullanabiliriz;

var ulkeler1 = GetCountryList(u => u.Name.Contains("rika"));
// Amerika, Afrika, Kosta Rika, ...

var ulkeler2 = GetCountryList(u => u.Area > 100);

var ulkeler3 = GetCountryList(u => u.Id < 10);

Böylece tek bir method’a nasıl bir sonuç listesi istediğimizi tarif ediyoruz ve o bize o sonucu döndürüyor.

MEA Influencer Community Platform

05 September 2013 Yorum yapılmamış

Sizleri MEA Influencer Community Program hakkında bilgilendirmek istiyorum.

MEA Influencer Windows 8 uygulaması sayesinde, Windows Azure, Windows Phone, Windows 8 konularında MEA bölgesinde (Ortadoğu ve Afrika) üretilen tüm blog yazılarına, webcast’lere ve uygulamalara kolaylıkla erişebilirsiniz.

MEA Influencer uygulamasını kullanarak takip etmek istediğiniz teknoloji ile ilgili üretilen tüm içeriklere tek bir yerden ulaşabilirsiniz.

Gelişmiş filtreleme özellikleri sayesinde, geçmiş veya gelecek webcast’leri, yayınlanmış uygulamaları ve makaleleri istediğiniz kategoriye göre filtreleyebilirsiniz.

Ayrıca paylaşımı yapana göre (MVP, MSP veya Influencer) veya paylaşımın diline göre (Türkçe, İngilizce veya Arapça) filtreleme yapabilirsiniz.

Kendi tercihlerinize göre filtrelerinizi varsayılan olarak kaydedebilirsiniz, böylece uygulamayı her kullandığınızda varsayılan tercihlerinize göre otomatik filtreleme yapılır.

Windows Phone 8 seçili temayı ve tema renklerini bulma

07 August 2013 1 yorum

Windows Phone 7 ve Windows Phone 8, 2 adet arkaplan renk seçeneği (koyu ve açık) ve 20 adet vurgu renk seçeneği (Windows Phone 8 Tema Renkleri) ile birlikte geliyor.

Uygulama içerisinden kullanıcının tema (arkaplan ve vurgu renk) tercihini bulmamız gerekebilir.

Application.Current altında yeralan static Resources özelliği aracılığı ile renk değerlerine ulaşabiliriz;

var lightThemeVisibility = (Visibility)Application.Current.Resources["PhoneLightThemeVisibility"];

var darkThemeVisibility = (Visibility)Application.Current.Resources["PhoneDarkThemeVisibility"];

var backgroundColor = (Color)Application.Current.Resources["PhoneBackgroundColor"];

var accentBrush = (SolidColorBrush)Resources["PhoneAccentBrush"];

var accentColor = (Color)Application.Current.Resources["PhoneAccentColor"];