J'ai récemment créé une couche d'interface pour distinguer le DataAccessProvider de notre couche de logique métier. Avec cette approche, nous pouvons modifier notre choix de DataAccessProvider à tout moment en modifiant les valeurs dans Web / App.Config. (plus de détails peuvent être donnés si nécessaire).
Quoi qu'il en soit, pour ce faire, nous utilisons la réflexion afin d'accomplir notre classe DataProvider sur laquelle 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 à quel point la réflexion est lente?