【发布时间】:2018-04-22 04:57:30
【问题描述】:
我正在编写一个 C# 应用程序,它可能会引用我也在编写的类库。该类库旨在成为我可能想要使用的其他类库的模板。我的意图是动态加载和使用类库生成的程序集中的类型。我想根据可配置的设置加载类型。这时候我的设置是这样的:
“MyOrg.MyApp.Services.Example, MyOrg.MyApp.Services”
这个字符串的意思是我想使用来自 MyOrg.MyApp.Services.dll 的 MyOrg.MyApp.Services 命名空间中的 Example 类。我将此设置格式基于type 属性,该属性在app.config 文件中的自定义配置部分的section 元素中使用,如here 所示。
我的问题是,我如何加载这个程序集并从这个字符串中实际获取Example 类的实例?此时,我有:
Assembly assembly = Assembly.Load("MyOrg.MyApp.Services.Example, MyOrg.MyApp.Services");
但是,当我运行它时,我收到以下错误:
无法加载文件或程序集“MyOrg.MyApp.Services.Example\, MyOrg.MyApp.Services”或其依赖项之一。给定的程序集名称或代码库无效。
我知道问题是因为在我的字符串中命名了一个类型。如果我只使用 MyOrg.MyApp.Service",则程序集加载正常。但是,我看不到加载 Example 类型的方法。
是否有一种我忽略的实用方法可以让我这样做?如果没有,如何从自定义程序集中加载特定类型?谢谢!
【问题讨论】:
-
添加类库作为对 .您可以使用与 System.dll 或 [您的显示技术].dll 等引用完全相同的方式使用这些类
-
无法加载类型,只能加载包含要实例化的类型的整个程序集
标签: c# reflection