Ich habe vor kurzem eine Schnittstelle erstellt, um den DataAccessProvider von unserer Business-Logik-Schicht zu unterscheiden. Mit diesem Ansatz können wir unsere Wahl von DataAccessProvider jederzeit ändern, indem Sie die Werte in der Web/App.Config ändern. (weitere Details können bei Bedarf angegeben werden).Wie langsam ist Reflection
Wie auch immer, wir verwenden Reflektion, um unsere DataProvider-Klasse zu erreichen, auf der wir arbeiten können.
/// <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();
}
}
Aber jetzt frage ich mich, wie langsam Reflexion ist?
Sicher wäre es trivial, einen Test-Kabelbaum zu erstellen, um dies zu bewerten? – marijne
Wenn die Factory ein Singleton ist, wird Assembly.Load nur einmal aufgerufen? – CVertex
http://stackoverflow.com/questions/25458/how-costly-is-net-reflection?rq=1 – nawfal