Makale Özeti

Bu makalede ResourceManager sınıfı incelenmiştir.

Makale

Resource Kullanımı -2

Önceki makalede resource (kaynak) kullanımına bir giriş yapılmış ve .NET Framework sınıf sistemindeki kaynak kullanımına ilişkin sınıf ve araçlar incelenmişti. Bu makalede ise ResourceManager isimli sınıf okuyucuya tanıtılmaktadır. 

ResourceManager Sınıfı

ResourceManager sınıfı, kaynaklara çalışma zamanında kolay erişim imkanı sağlar. Bu sınıfın başlangıç fonksiyonu (constructor), birinci parametresine erişilmek istenilen kaynağın kök ismini alır. Örneğin “Capa.resources” gibi bir kaynak dosyası için bu parametreye geçilmesi gereken değer; “Capa” olmalıdır. Fonksiyon ikinci parametre olarak ise; kaynağı kullanacak assembly’i programatik olarak temsil eden Assembly sınıfı türünde bir referans değerini alır. Prototipi :

Public Sub New(ByVal baseName As String, _
               ByVal assembly As Assembly _
)

Bu sınıfa ilişkin GetObject() ve GetString() metotları ise; parametrelerine girilen anahtar bilgisi ile uyumlu değeri kaynak dosyası içerisinden okuyarak, döndürürler.

Örnek : Aşağıdaki konsol uygulamasında CResource isimli ve ResourceManager sınıfını kullanan bir sınıf yazılmıştır. CResource sınıfına ait Read() metodu; “Capa.resources” isimli kaynak dosyasındaki verileri okuyacak ve bu verileri bir diyalog penceresinde gösterebilecek şekilde yazılmıştır.

Imports System
Imports System.Resources
Imports System.Reflection
Imports System.Windows.Forms
Imports System.Drawing

Public Class CResource
    Public Sub Read()
        Dim rm As ResourceManager
        rm = New ResourceManager("Capa", [Assembly].GetExecutingAssembly())
       
        Dim b As Bitmap = CType(rm.GetObject("Capa"),Bitmap)
        Dim p As New PictureBox
        p.Image = b
       
p.Height = b.Height 
        p.Width = b.Width
        p.Location = New Point(1, 1) 
        
        Dim l As New Label
        l.Location = New Point(295, 1)
        l.Font = New Font(l.Font.FontFamily,10,FontStyle.Bold)
        l.AutoSize = True l.Text = rm.GetString("Anchor")
       
        Dim f As New Form
       
f.Height = 480
        f.Width = 640
        f.Controls.Add(p)
        f.Controls.Add(l)
        f.ShowDialog()
    End Sub
End Class

Test kodu
Module Module1
Sub Main()
    Dim r As New CResource
    r.Read() 
End Sub
End Module

İki ayrı dosya biçiminde yazılan bu uygulama, komut satırından çalışan vbc.exe ya da csc.exe isimli derleyicilerle derlenmelidir. Uygulama çalıştırıldığında ise; önce konsol ekranı açılacak ve f nesnesi ile temsil edilen diyalog penceresi görüntülenecektir.
Söz konusu diyalog penceresi üzerine programatik olarak yerleştirilen picturebox ve label kontrolleri ise kaynak içerisinden okunan verilerin görüntülenmesini sağlar.


Aykut TAŞDELEN

MVP (Most Valuable Professional)

aykuttasdelen@yazgelistir.com