DesignTimeResourceProviderFactoryAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定設計階段的資源提供者 Factory 型別。 此類別無法獲得繼承。
public ref class DesignTimeResourceProviderFactoryAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class DesignTimeResourceProviderFactoryAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type DesignTimeResourceProviderFactoryAttribute = class
inherit Attribute
Public NotInheritable Class DesignTimeResourceProviderFactoryAttribute
Inherits Attribute
- 繼承
- 屬性
範例
下列程式碼範例示範自訂的資源提供者處理站,可透過 DesignTimeResourceProviderFactoryAttribute 屬性指定自訂的設計階段資源提供者處理站。 此範例不包含實作自訂設計階段資源提供者處理站所需的程式碼。
namespace CustomResourceProviders
{
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.Compilation;
using System.Resources;
using System.Globalization;
using System.Collections;
using System.Reflection;
using System.Web.UI.Design;
[
DesignTimeResourceProviderFactoryAttribute(
typeof(CustomDesignTimeResourceProviderFactory))
]
public class CustomResourceProviderFactory : ResourceProviderFactory
{
public override IResourceProvider
CreateGlobalResourceProvider(string classname)
{
return new CustomResourceProvider(null, classname);
}
public override IResourceProvider
CreateLocalResourceProvider(string virtualPath)
{
return new CustomResourceProvider(virtualPath, null);
}
}
// Define the resource provider for global and local resources.
internal class CustomResourceProvider : IResourceProvider
{
string _virtualPath;
string _className;
public CustomResourceProvider(string virtualPath, string classname)
{
_virtualPath = virtualPath;
_className = classname;
}
private IDictionary GetResourceCache(string culturename)
{
return (IDictionary)
System.Web.HttpContext.Current.Cache[culturename];
}
object IResourceProvider.GetObject
(string resourceKey, CultureInfo culture)
{
object value;
string cultureName = null;
if (culture != null)
{
cultureName = culture.Name;
}
else
{
cultureName = CultureInfo.CurrentUICulture.Name;
}
value = GetResourceCache(cultureName)[resourceKey];
value ??= GetResourceCache(null)[resourceKey];
return value;
}
IResourceReader IResourceProvider.ResourceReader
{
get
{
string cultureName = null;
CultureInfo currentUICulture = CultureInfo.CurrentUICulture;
if (!String.Equals(currentUICulture.Name,
CultureInfo.InstalledUICulture.Name))
{
cultureName = currentUICulture.Name;
}
return new CustomResourceReader
(GetResourceCache(cultureName));
}
}
}
internal sealed class CustomResourceReader : IResourceReader
{
private IDictionary _resources;
public CustomResourceReader(IDictionary resources)
{
_resources = resources;
}
IDictionaryEnumerator IResourceReader.GetEnumerator()
{
return _resources.GetEnumerator();
}
void IResourceReader.Close() { }
IEnumerator IEnumerable.GetEnumerator()
{
return _resources.GetEnumerator();
}
void IDisposable.Dispose() { return; }
}
public class CustomDesignTimeResourceProviderFactory :
DesignTimeResourceProviderFactory
{
private CustomDesignTimeLocalResourceProvider _localResourceProvider;
private CustomDesignTimeLocalResourceWriter _localResourceWriter;
private CustomDesignTimeGlobalResourceProvider _globalResourceProvider;
public override IResourceProvider
CreateDesignTimeLocalResourceProvider(IServiceProvider serviceProvider)
{
// Return an IResourceProvider.
_localResourceProvider ??= new CustomDesignTimeLocalResourceProvider();
return _localResourceProvider;
}
public override IDesignTimeResourceWriter
CreateDesignTimeLocalResourceWriter(IServiceProvider serviceProvider)
{
// Return an IDesignTimeResourceWriter.
_localResourceWriter ??= new CustomDesignTimeLocalResourceWriter();
return _localResourceWriter;
}
public override IResourceProvider
CreateDesignTimeGlobalResourceProvider(IServiceProvider serviceProvider,
string classKey)
{
// Return an IResourceProvider.
_globalResourceProvider ??= new CustomDesignTimeGlobalResourceProvider();
return _globalResourceProvider;
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Web.Compilation
Imports System.Resources
Imports System.Globalization
Imports System.Collections
Imports System.Reflection
Imports System.Web.UI.Design
Namespace CustomResourceProviders
<DesignTimeResourceProviderFactoryAttribute(GetType(CustomDesignTimeResourceProviderFactory))> _
Public Class CustomResourceProviderFactory
Inherits ResourceProviderFactory
Public Overrides Function CreateGlobalResourceProvider(ByVal classname As String) As IResourceProvider
Return New CustomResourceProvider(Nothing, classname)
End Function
Public Overrides Function CreateLocalResourceProvider(ByVal virtualPath As String) As IResourceProvider
Return New CustomResourceProvider(virtualPath, Nothing)
End Function
End Class
' Define the resource provider for global and local resources.
Friend Class CustomResourceProvider
Implements IResourceProvider
Dim _virtualPath As String
Dim _className As String
Public Sub New(ByVal virtualPath As String, ByVal classname As String)
_virtualPath = virtualPath
_className = classname
End Sub
Private Function GetResourceCache(ByVal culturename As String) As IDictionary
Return System.Web.HttpContext.Current.Cache(culturename)
End Function
Function GetObject(ByVal resourceKey As String, ByVal culture As CultureInfo) As Object Implements IResourceProvider.GetObject
Dim value As Object
Dim cultureName As String
cultureName = Nothing
If (IsNothing(culture)) Then
cultureName = CultureInfo.CurrentUICulture.Name
Else
cultureName = culture.Name
End If
value = GetResourceCache(cultureName)(resourceKey)
If (value = Nothing) Then
value = GetResourceCache(Nothing)(resourceKey)
End If
Return value
End Function
ReadOnly Property ResourceReader() As IResourceReader Implements IResourceProvider.ResourceReader
Get
Dim cultureName As String
Dim currentUICulture As CultureInfo
cultureName = Nothing
currentUICulture = CultureInfo.CurrentUICulture
If (Not (String.Equals(currentUICulture.Name, CultureInfo.InstalledUICulture.Name))) Then
cultureName = currentUICulture.Name
End If
Return New CustomResourceReader(GetResourceCache(cultureName))
End Get
End Property
End Class
Friend NotInheritable Class CustomResourceReader
Implements IResourceReader
Private _resources As IDictionary
Public Sub New(ByVal resources As IDictionary)
_resources = resources
End Sub
Function GetEnumerator1() As IDictionaryEnumerator Implements IResourceReader.GetEnumerator
Return _resources.GetEnumerator()
End Function
Sub Close() Implements IResourceReader.Close
End Sub
Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
Return _resources.GetEnumerator()
End Function
Sub Dispose() Implements IDisposable.Dispose
End Sub
End Class
Public Class CustomDesignTimeResourceProviderFactory
Inherits DesignTimeResourceProviderFactory
Private _localResourceProvider As New CustomDesignTimeLocalResourceProvider
Private _localResourceWriter As New CustomDesignTimeLocalResourceWriter
Private _globalResourceProvider As New CustomDesignTimeGlobalResourceProvider
Public Overrides Function CreateDesignTimeLocalResourceProvider(ByVal serviceProvider As IServiceProvider) As IResourceProvider
' Return an IResourceProvider.
If (_localResourceProvider Is Nothing) Then
_localResourceProvider = New CustomDesignTimeLocalResourceProvider
End If
Return _localResourceProvider
End Function
Public Overrides Function CreateDesignTimeLocalResourceWriter(ByVal serviceProvider As IServiceProvider) As IDesignTimeResourceWriter
' Return an IDesignTimeResourceWriter.
If (_localResourceWriter Is Nothing) Then
_localResourceWriter = New CustomDesignTimeLocalResourceWriter
End If
Return _localResourceWriter
End Function
Public Overrides Function CreateDesignTimeGlobalResourceProvider(ByVal serviceProvider As IServiceProvider, ByVal classKey As String) As IResourceProvider
' Return an IResourceProvider.
If (_globalResourceProvider Is Nothing) Then
_globalResourceProvider = New CustomDesignTimeGlobalResourceProvider
End If
Return _globalResourceProvider
End Function
End Class
備註
類別 DesignTimeResourceProviderFactoryAttribute 可讓 ResourceProviderFactory 物件指定相關聯 DesignTimeResourceProviderFactory 物件的型別。 類別 DesignTimeResourceProviderFactory 可用來建立用於讀取和寫入資源的設計階段提供者。 在 Microsoft Visual Studio 2005 中,開發人員可以使用 [工具] 功能表上的 [產生本機資源] 命令,在設計階段期間建立資源。
建構函式
DesignTimeResourceProviderFactoryAttribute(String) |
使用設定為指定 Factory 型別名稱的屬性,初始化 DesignTimeResourceProviderFactoryAttribute 類別的新執行個體。 |
DesignTimeResourceProviderFactoryAttribute(Type) |
使用設定為指定 Factory 型別之限定名稱 (Qualified Name) 的屬性,初始化 DesignTimeResourceProviderFactoryAttribute 類別的新執行個體。 |
屬性
FactoryTypeName |
取得 Factory 型別名稱的值。 |
TypeId |
在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。 (繼承來源 Attribute) |
方法
Equals(Object) |
傳回值,這個值指出此執行個體是否與指定的物件相等。 (繼承來源 Attribute) |
GetHashCode() |
傳回這個執行個體的雜湊碼。 (繼承來源 Attribute) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
IsDefaultAttribute() |
判斷是否使用預設提供者。 |
Match(Object) |
在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承來源 Attribute) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |
明確介面實作
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承來源 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
擷取物件的類型資訊,可以用來取得介面的類型資訊。 (繼承來源 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
擷取物件提供的類型資訊介面數目 (0 或 1)。 (繼承來源 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供物件所公開的屬性和方法的存取權。 (繼承來源 Attribute) |