DesignTimeResourceProviderFactoryAttribute Classe

Definizione

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

C#
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class DesignTimeResourceProviderFactoryAttribute : Attribute
Ereditarietà
DesignTimeResourceProviderFactoryAttribute
Attributi

Esempio

Nell'esempio di codice seguente viene illustrata 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 del provider di risorse in fase di progettazione personalizzata.

C#
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;
        }
    }

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 Genera risorsa locale nel menu Strumenti per creare risorse durante la fase di progettazione.

Costruttori

DesignTimeResourceProviderFactoryAttribute(String)

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

DesignTimeResourceProviderFactoryAttribute(Type)

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

Proprietà

FactoryTypeName

Ottiene il valore del nome del tipo di factory.

TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

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

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto 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 equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

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

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

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle 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 a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a

Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Vedi anche