【发布时间】:2012-06-18 00:36:08
【问题描述】:
在我的 MVC 项目的 web.config 中,我有这个:
<appSettings>
<add key="MembershipRepository" value="Repo.MembershipRepository"/>
</appSettings>
我有这样的代码:
var appSettings = ConfigurationManager.AppSettings;
string membershipRepositoryClassName = appSettings["MembershipRepository"];
Type membershipRepositoryType = Type.GetType(membershipRepositoryClassName);
IMembershipRepository repository = (IMembershipRepository)Activator.CreateInstance(membershipRepositoryType);
假设包含web.config 的Web 应用程序在程序集Web 中。
我给出的代码段在汇编中Lib。
MembershipRepository 类在程序集中 Repo。
Web 引用了 Lib 和 Repo。
Lib 没有引用任何其他程序集(它可能被引用为 dll)。
Repo 可能引用也可能不引用 Lib。
我将membershipRepositoryType 设为null。我知道也许我需要指定 MembershipRepository 所在的程序集。一种方法是在配置中指定程序集名称(如this)。但我认为应该有一些其他的方式。否则如何加载其他类仅从配置文件中获取类名?
例如,MembershipProvider 类可以很好地从其他程序集中加载。
我该怎么做。或者如果我不能,为什么我不能?
【问题讨论】:
-
疑难解答提示:将
true传递给Type.GetType—Type.GetType(membershipRepositoryClassName, true)—这样您就可以获得描述问题的详细异常。
标签: c# reflection .net-assembly