【发布时间】:2010-10-20 18:26:20
【问题描述】:
我最近创建了一个接口层来区分 DataAccessProvider 和我们的业务逻辑层。 使用这种方法,我们可以随时通过更改 Web/App.Config 中的值来更改对 DataAccessProvider 的选择。 (如果需要可以提供更多细节)。
无论如何,为此我们使用反射来完成我们可以工作的 DataProvider 类。
/// <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();
}
}
但现在我想知道反射有多慢?
【问题讨论】:
-
创建一个测试工具来进行基准测试肯定是微不足道的吗?
-
如果工厂是单例,那么 Assembly.Load 只被调用一次?
标签: c# performance reflection assemblies