如何从该网站引用的DLL加载网站中包含的类?

时间:2010-04-02 18:39:09

标签: c# asp.net

好的,这有点模糊不清,我不确定这是做我想做的最好的方法,但是这里有。

基本上我的网站上有一个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应用程序。

2 个答案:

答案 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方法