好的,这有点模糊不清,我不确定这是做我想做的最好的方法,但是这里有。
基本上我的网站上有一个Presentation Layer Dll来处理Model View Presenter类。表示层还处理我的网站的登录,然后调用Web服务。目前,只要表示层调用模型,它就会验证用户的详细信息,如果它们无效,则会调用loginHandler,后者会将用户重定向到登录页面。但是,我无法从我的演示文稿图层中动态加载我的网站中的新登录页面。
我尝试使用反射来动态加载类但由于方法调用是在演示程序集中,因此只在我要加载的页面在网站中时才查看该程序集。
继承了加载View的反射代码:
public ILoginView LoadView()
{
string viewName = ConfigurationManager.AppSettings["LoginView"].ToString();
Type type = Type.GetType(viewName, true);
object newInstance = Activator.CreateInstance(type);
return newInstance as ILoginView;
}
任何人都有关于如何在网站组装中搜索的任何建议?理想我不想将此实现特别地绑定到网站,因为表示层也用于WPF应用程序。
答案 0 :(得分:3)
您的页面类是由ASP.NET动态生成的 当它这样做时,它为每个程序集/类型提供唯一的名称。这就是为什么很难找到您正在寻找的类型。
我实际上有一个类似的问题,我专门看这些仅存在于内存中的程序集。
以下是我提出的内容
Type t = (from asm in AppDomain.CurrentDomain.GetAssemblies()
from type in asm.GetTypes()
where type.Name.StartsWith("MyType")
select type).FirstOrDefault();
如果有人知道如何抓取由ASP.NET动态创建的特定程序集,我很乐意听到它。
答案 1 :(得分:0)
您尝试动态实例化的对象是什么?如果这只是一个类而不是你应该没有问题将它移动到表示层dll。如果这是用户控件 - 您可以在Page对象
上使用LoadControl方法