gpt4 book ai didi

c# - 我可以将 Activator.CreateInstance 与接口(interface)一起使用吗?

转载 作者:可可西里 更新时间:2023-11-01 08:15:20 29 4
gpt4 key购买 nike

我有一个例子:

        Assembly asm = Assembly.Load("ClassLibrary1");
Type ob = asm.GetType("ClassLibrary1.UserControl1");
UserControl uc = (UserControl)Activator.CreateInstance(ob);
grd.Children.Add(uc);

我正在创建类的实例,但是如何创建实现某个接口(interface)的类的实例?即 UserControl1 实现了 ILoad 接口(interface)。

U:我可以稍后将对象转换为接口(interface),但我不知道程序集中的哪个类型实现了该接口(interface)。

最佳答案

这是我用过几次的一些代码。它查找程序集中实现特定接口(interface)的所有类型:

Type[] iLoadTypes = (from t in Assembly.Load("ClassLibrary1").GetExportedTypes()
where !t.IsInterface && !t.IsAbstract
where typeof(ILoad).IsAssignableFrom(t)
select t).ToArray();

然后您在 ClassLibrary1 中拥有实现 ILoad 的所有类型。

然后您可以实例化所有这些:

ILoad[] instantiatedTypes = 
iLoadTypes.Select(t => (ILoad)Activator.CreateInstance(t)).ToArray();

关于c# - 我可以将 Activator.CreateInstance 与接口(interface)一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10732933/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com