第二篇著重於將本地化資源儲存於資料庫,並實作自訂 ResourceProviderFactory 與 IResourceProvider,建立完整的資料庫驅動資源提供管線。
| 欄位 | 說明 |
|---|---|
resourceType | 資源分類:頁面虛擬路徑(本地資源)或自訂名稱(全域資源,如 Glossary、CommonTerms) |
cultureCode | 文化特性代碼(ISO 標準),支援擴充 |
resourceKey | 資源鍵值,本地資源採 控件前綴.屬性名 慣例 |
resourceValue | 資源內容,支援 4KB 字串 |
主鍵為 (resourceType, cultureCode, resourceKey) 複合鍵。
Expressions.aspx、SubDir1/Expressions.aspx,區分同名頁面。Glossary、CommonTerms、Config。封裝資料庫查詢邏輯,依提供者模式提供 GetObject、GetResourceEnumerator 等方法,支援快取與效能優化。
public abstract class ResourceProviderFactory
{
protected ResourceProviderFactory();
public abstract IResourceProvider CreateGlobalResourceProvider(string classKey);
public abstract IResourceProvider CreateLocalResourceProvider(string virtualPath);
}
自訂工廠繼承此類別,兩個建立方法分別回傳實作 IResourceProvider 的全域/本地提供者實例。
GetObject(string resourceKey, CultureInfo culture):取得單一資源值。GetResourceEnumerator(CultureInfo culture):列舉所有資源,供設計工具與強型別類別生成使用。在 web.config 註冊自訂工廠:
<system.web>
<globalization resourceProviderFactoryType="CustomResourceProviderFactory, App_Code" />
</system.web>
此篇奠定了資料庫資源儲存的核心基礎設施,為第三篇表達式建構器擴充鋪路。