.NET(C#):使用ResourceManager類型

來源:互聯網
上載者:User

注意:

這是另一篇文章“.NET(C#):淺談資訊清單資源和RESX資源”的一部分。

ResourceManager類型在System.Resources命名空間內,用來在運行時刻進行二進位資訊清單資源(.resources檔案)的讀取,其也支援外部檔案形式的讀取。它和其他資源讀取類:ResourceSet和IResourceReader的區別是它的功能是最強大的(內部會使用一個ResourceSet),因為不因能夠像ResourceSet一樣快速讀取資源資料,它可以對.NET中程式集的附屬組件(satellite assembly)進行探索,因此支援資源資料的多文化讀取。

 

下面是ResourceManager的常用成員:

//System.Resources命名空間內

//在運行時刻讀取.resources二進位資源檔

//支援多語言探索

class ResourceManager

//方法

    建構函式(string baseName, Assembly ass);

    //在程式集(ass參數)中查詢baseName.resources檔案

    //有其他重載具有Type參數,來制定一個自訂的ResourceSet類型,預設使用ResourceSet類

    建構函式(Type);

    //BaseName = Type.Name, 內部程式集 = Type.Assembly

 

    static ResourceManager CreateFileBasedResourceManager(string baseName, string folder, Type customResSet);

    //(注意靜態)從檔案中建立一個ResourceManager類型

 

    //從資源中讀取資料

    object GetObject(string, CultureInfo);

    UnmanagedMemoryStream GetStream(string, CultureInfo);

    string GetString(string, CultureInfo);

 

    ResourceSet GetResourceSet(CultureInfo, bool, bool);

    //擷取ResourceSet對象,可以指定載入選項和文化不存在使用父文化

    void ReleaseAllResources();

    //關閉內部ResourceSet

//屬性

    BaseName: string;

    //可以在建構函式中設定。

    //如果資源檔名是aaa.en-us.resources,那BaseName是aaa

    IgnoreCase: bool;

    //資料查詢中不區分大小寫

 

 

下面代碼使用IResourceWriter先寫入一個二進位資源檔(a.resources),然後用ResourceManager讀取檔案資料,注意從檔案建立ResourceManager使用CreateFileBasedResourceManager,其中檔案名稱仍然按照ResourceManager.BaseName屬性,比如a.resources檔案,名稱就是a變可以了。

(關於IResourceReader或者IResourceWriter,可以參考這篇文章:.NET(C#):使用IResourceReader,IResourceWriter和ResourceSet):

//+ using System.Resources

class Program

{

    static void Main()

    {

        //使用IResourceWriter

        Write();

        //使用ResourceManager讀取

        ReadUsingResourceManager();

    }

 

    //使用IResourceWriter

    static void Write()

    {

        using (IResourceWriter rw = new ResourceWriter("a.resources"))

        {

            rw.AddResource("byte", (byte)0xff);

            rw.AddResource("文本", "hellow");

            rw.AddResource("guid", Guid.NewGuid());

        }

    }

    //使用ResourceManager讀取

    static void ReadUsingResourceManager()

    {

        var resMgr = ResourceManager.CreateFileBasedResourceManager("a", Directory.GetCurrentDirectory(), null);

 

        Console.WriteLine((byte)resMgr.GetObject("byte"));

        Console.WriteLine(resMgr.GetString("文本"));

        Console.WriteLine((Guid)resMgr.GetObject("guid"));

    }

}

 

輸出:

255

hellow

cf042fc6-ae74-42c0-935c-ed962412bbb0

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.