【问题标题】:Call Activator.CreateInstance in a dll to intance class that reside inside Asp.Net App_Code在 dll 中调用 Activator.CreateInstance 到驻留在 Asp.Net App_Code 中的实例类
【发布时间】:2010-04-14 23:33:43
【问题描述】:

求助,思路如下:

External.dll
IMyClass NewCreated = (IMyClass)Activator.CreateInstance(Namespace.MyClass).UnWrap();

-----------------------------------------

Asp.Net WebSite
    App_Code
      Namespace.MyClass.cs
    Bin
      External.dll

这可能吗?

我已经尝试了很多可能的组合,例如:

Assembly.GetCallingAssembly().CreateInstance("Namespace.MyClass")
Activator.CreateInstance(AppDomain.CurrentDomain,"Namespace","Namespace.MyClass")
Assembly.GetExecutingAssembly().CreateInstance("Namespace.MyClass")

【问题讨论】:

    标签: c# asp.net assemblies activator createinstance


    【解决方案1】:

    您可以使用BuildManager.CodeAssemblies 属性列出App_Code 目录中已编译的所有程序集名称。您或许可以通过这种方式完成您需要的工作。

    App_Code 的问题在于,所有内容都被动态编译成一个本质上是临时的程序集。这带有一个临时程序集名称。这使得硬编码程序集名称或路径成为不可能。

    【讨论】:

    • 非常感谢,这是从 dll 初始化 app_code 中任何类的完整代码。 Activator.CreateInstance(((Assembly)BuildManager.CodeAssemblies[0]).GetType("Namespace.Class"), ConstructorParams1,ConstructorParams2);
    【解决方案2】:

    无需使用 BuildManager.CodeAssemblies 属性来列出所有程序集名称。而是使用:

    type="Namespace.MyClass, App_Code" 以引用该类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多