在 dll 中调用 Activator.CreateInstance 来实例化位于 Asp.Net App_Code 内的类

发布于 2024-08-28 13:07:12 字数 551 浏览 7 评论 0原文

求助,这个想法是这样的:

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")

Help, here is the idea:

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

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

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

Is that even posible?

I have tried, a lot of posible combinations, like:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涙—继续流 2024-09-04 13:07:12

您可以使用 BuildManager.CodeAssemblies属性列出App_Code目录中所有已编译的程序集名称。您也许能够以这种方式完成您需要的事情。

App_Code 的问题在于,所有内容都会动态编译到本质上是临时的程序集中。它带有一个临时程序集名称。这使得无法对程序集名称或路径进行硬编码。

You can use the BuildManager.CodeAssemblies property to list all the assembly names that have been compiled in the App_Code directory. You may be able to accomplish what you need that way.

The problem with App_Code is that everything gets dynamically compiled into an assembly that is by nature, temporary. This comes along with a temporary assembly name. This makes it impossible to hardcode an assembly name or path.

时光无声 2024-09-04 13:07:12

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

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

No need use the BuildManager.CodeAssemblies property to list all the assembly names. Instead use:

type="Namespace.MyClass, App_Code" to reference the class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文