7 Mayıs 2016 Cumartesi

ResourceManager Sınıfı

Giriş
Şu satırı dahil ederiz.
using System.Resources;
Constructor
Kendi assembly'miz içindeki (yani Resources dizini altındaki .resx dosyasına) nesneye şöyle erişiriz.
Resources.ResourceManager
Constructor - resx + assembly (bir başka assembly)
MyAssembly içinde Lang dizini altında langres.resx dosyası olsun. Bu dosyayı yükleyip kullanabilmek için ResourceManager sınıfına verilen resx dosyasının şekli şöyledir: "MyAssembly.Lang.langres".

Şöyle yaparız.
Assembly assembly = ...

var namespaceName = Path.GetFileNameWithoutExtension(assembly.CodeBase);
namespaceName = namespaceName + ".Properties.Resources";

new ResourceManager(namespaceName, assembly);
Bazen assembly o assembly içindeki bir tipi kullanarak kolayca şöyle bulunur.
ResourceManager rm = new ResourceManager("YourRootNamespace.YourResourceFileName",
       GetType().Assembly);
GetObject metodu
Şöyle yaparız.
Image myImage = (Image)(rm.GetObject("ImageNameInResourceFile"));
GetStream metodu
Şöyle yaparız
string documents = "one";
var unmanagedMemoryStream = Resources.ResourceManager.GetStream(document);

var memoryStream = new MemoryStream();
unmanagedMemoryStream.CopyTo(memoryStream);
memoryStream.Position = 0;
byte[] bytes = memoryStream.ToArray();
GetString metodu
Properties.Resources ile aynı şekilde çalışıyor.
private static class CountryHelper
{
    private static ResourceManager rm;

    static CountryHelper()
    {
        rm = new ResourceManager("Countries",  typeof(CountryHelper).Assembly);
    }

    public static Country GetByCode(string code)
    {
        string countryName = rm.GetString(code + ".EnglishName");
        return new Country { Code = code, EnglishName = countryName };
    }
}


Hiç yorum yok:

Yorum Gönder