C#-自定义部件的加载类型

C#-自定义部件的加载类型,c#,reflection,C#,Reflection,我正在编写一个C#应用程序,它可能引用我正在编写的类库。类库旨在成为我可能要使用的其他类库的模板。我的目的是从类库生成的程序集中动态加载和使用类型。我想根据可配置的设置加载类型。此时,我的设置如下所示: “MyOrg.MyApp.Services.Example,MyOrg.MyApp.Services” 这个字符串的意思是我想使用MyOrg.MyApp.Services命名空间中的Example类,它来自MyOrg.MyApp.Services.dll。我将此设置格式基于app.config文

我正在编写一个C#应用程序,它可能引用我正在编写的类库。类库旨在成为我可能要使用的其他类库的模板。我的目的是从类库生成的程序集中动态加载和使用类型。我想根据可配置的设置加载类型。此时,我的设置如下所示:

“MyOrg.MyApp.Services.Example,MyOrg.MyApp.Services”

这个字符串的意思是我想使用
MyOrg.MyApp.Services
命名空间中的
Example
类,它来自MyOrg.MyApp.Services.dll。我将此设置格式基于app.config文件中自定义配置节的
元素中使用的
类型
属性,如图所示

我的问题是,如何加载此程序集并从该字符串中实际获取
Example
类的实例?目前,我有:

Assembly assembly = Assembly.Load("MyOrg.MyApp.Services.Example, MyOrg.MyApp.Services");
但是,当我运行该命令时,我收到以下错误:

无法加载文件或程序集“MyOrg.MyApp.Services.Example\、MyOrg.MyApp.Services”或其依赖项之一。给定的程序集名称或代码基无效

我知道问题是因为在我的字符串中命名了一个类型。如果我只使用MyOrg.MyApp.Service”,程序集可以很好地加载。但是,我看不到加载
示例
类型的方法


是否有一种我忽略的实用方法允许我这样做?如果没有,我如何从自定义程序集中加载特定类型?谢谢!

有许多不同的方法可以这样做。一种方法是从应用程序可访问的文件路径加载程序集,使用其全名获取所需类型,然后使用静态激活vator类来获取它的实例

Assembly asm = Assembly.LoadFrom("file path to your assembly");

Type typ = asm.GetType("MyOrg.MyApp.Services.Example, MyOrg.MyApp.Services");

object instance =  Activator.CreateInstance(typ);

请记住,除非在实例化后使其附着到接口并将其强制转换到该接口,否则您将无法以类型安全的方式访问此实例上的成员,但这是另一个主题。

将类库添加为对的引用。并且您可以使用与引用相同的方法来使用这些类,如System.dll或[your Dispaly Technology].dllyou无法加载类型,只能加载包含要实例化的类型的整个程序集