La lenteur est la Réflexion

J'ai récemment créé une couche d'interface de distinguer les DataAccessProvider de notre couche de logique Métier.
Avec cette approche, nous pouvons changer notre choix de DataAccessProvider chaque fois que nous voulons changer les valeurs dans le Web/App.Config.
(plus de détails peuvent être donnés si nécessaire).

De toute façon, pour ce faire, nous utilisons la réflexion pour accomplir notre DataProvider de classe sur lesquels nous pouvons travailler.

///<summary>
///The constructor will create a new provider with the use of reflection.
///If the assembly could not be loaded an AssemblyNotFoundException will be thrown.
///</summary>
public DataAccessProviderFactory()
{
    string providerName = ConfigurationManager.AppSettings["DataProvider"];
    string providerFactoryName = ConfigurationManager.AppSettings["DataProviderFactory"];
    try
    {
        activeProvider = Assembly.Load(providerName);
        activeDataProviderFactory = (IDataProviderFactory)activeProvider.CreateInstance(providerFactoryName);
    }
    catch
    {
        throw new AssemblyNotFoundException();
    }
}

Mais maintenant, je me demande comment une lente réflexion est?

  • Assurément, il serait trivial de créer un harnais de test pour indice de référence de l'?
  • Si l'usine est un singleton, puis de l'Assemblée.La charge ne doit être appelé qu'une seule fois?
  • stackoverflow.com/questions/25458/...
InformationsquelleAutor user29964 | 2009-04-21