DesignTimeResourceProviderFactoryAttribute Classe

Definizione

Specifica il tipo di factory del provider di risorse per la fase di progettazione. La classe non può essere ereditata.

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
Ereditarietà
DesignTimeResourceProviderFactoryAttribute
Attributi

Esempio

L'esempio di codice seguente mostra una factory personalizzata del provider di risorse che specifica una factory personalizzata del provider di risorse in fase di progettazione tramite l'attributo DesignTimeResourceProviderFactoryAttribute . Questo esempio non include il codice necessario per implementare una factory personalizzata del provider di risorse in fase di progettazione.

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

Commenti

La DesignTimeResourceProviderFactoryAttribute classe consente a un ResourceProviderFactory oggetto di specificare il tipo dell'oggetto associato DesignTimeResourceProviderFactory . La DesignTimeResourceProviderFactory classe viene usata per creare provider in fase di progettazione per la lettura e la scrittura di risorse. All'interno di Microsoft Visual Studio 2005, uno sviluppatore può usare il comando Generate Local Resource nel menu Tools per creare risorse in fase di progettazione.

Costruttori

Nome Descrizione
DesignTimeResourceProviderFactoryAttribute(String)

Inizializza una nuova istanza della DesignTimeResourceProviderFactoryAttribute classe con l'attributo impostato sul nome del tipo di factory specificato.

DesignTimeResourceProviderFactoryAttribute(Type)

Inizializza una nuova istanza della DesignTimeResourceProviderFactoryAttribute classe con l'attributo impostato sul nome completo del tipo di factory specificato.

Proprietà

Nome Descrizione
FactoryTypeName

Ottiene il valore del nome del tipo di factory.

TypeId

Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute.

(Ereditato da Attribute)

Metodi

Nome Descrizione
Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per questa istanza.

(Ereditato da Attribute)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

Determina se viene utilizzato il provider predefinito.

Match(Object)

Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto .

(Ereditato da Attribute)

Si applica a

Vedi anche