C# 3.0 ile gelen partial keyword’u sayesinde partial class tanımlayabiliyoruz.
partial keyword’unun pek bilinmeyen bir kullanım alanı ise method‘lardır.
partial class tanımlayabildiğimiz gibi partial method‘da tanımlayabiliyoruz.
partial class‘ları tanımlamamızdaki en büyük fayda, kod üreticiler olmuştur. partial method tanımlamanın güzelliği de işte burada. Bir kod üreticisi ile otomatik olarak kod ürettirirken, partial method‘lar ürettirebiliriz.
Eğer üretilmiş partial method‘u uygulamazsanız, ilgili partial method‘u çağıran kod parçaları hata vermiyor.
Basitçe, uygulanmamış partial method çağrıları derleme (compile) sırasında yok sayılıyor.
Ama partial method‘lar için bazı kısıtlamalar ve kurallar var;
public partial class DataAccessLayer { partial void ResetConnection(); }
public partial class DataAccessLayer { partial void ResetConnection() { ///Connection’ı resetleyen kod }
public void Reset()
{
ResetConnection();
} }
Gördüğünüz gibi, Reset() isminde public bir method yazmam gerekti. Çünkü, ResetConnection() method‘u partial olduğu için private erişim belirleyicisine sahip.
Eğer yukarıdaki kodun exe/dll dosyasına ILDASM tool’u bakarsak, DataAccessLayer.ResetConnection() private method’unu ve Reset() method‘u içerisinde bu method’u çağıran kod parçasını görürüz.
Eğer ResetConnection() method’unu uyguladığımız kod parçasını sildikten sonra, ILDASM ile bakarsak, DataAccessLayer.ResetConnection() private method’unun bulunmadığını ve Reset() method’unda bu method’u çağıran kod parçası olmadığını görürüz.
Böylece çalışma zamanı hatası almayız.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484