July, 2016 | Engin Polat'ın Windows, Web, Mobile ve Game içerikli programcılık sitesi

Arşiv

2016 July ayı için arşiv

LLPA Battle Türkiye 2016

30 July 2016 Yorum yapılmamış

LLPA (Leading Learning Partner AssociationLider Eğitim Merkezleri Topluluğu) dünya üzerinde 28 ayrı ülkede ilgili ülkenin en yetkin eğitim merkezini üyesi olarak alan bir eğitim kurumları topluluğudur.

Her yıl topluluk üyesi eğitim merkezlerinin katılabildiği bir yarışma organize eder ve her ülkenin kazananını uluslararası arenada yarıştırır.

Topluluğun Türkiye üyesi olan BilgeAdam, 29 Temmuz 2016 tarihinde Maslak ofisinde LLPA Battle Turkey (LLPA Türkiye Yarışması) yarışmasını gerçekleştirdi.

14 katılımcı‘nın katıldığı yarışmayı ben kazandım ve uluslararası yarışmada Türkiye‘yi temsil etme hakkı kazandım.

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;