微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建一个我们没有使用 CreateInstance 引用的项目类的实例

如何解决创建一个我们没有使用 CreateInstance 引用的项目类的实例

我有 1 个解决方案。有 3 个项目:Client、Visualization 和 ClientInterface。

Project Client 和 Visualization 引用了 ClientInterface。

ClientInterface 有类:

public abstract class VisualisationCollector
{        
    public abstract void Initialize();
}

客户:

public class Collector : VisualisationCollector
{
    public int Index {get; set;}
    protected override void Initialize(){...}
}

我从客户端复制 .dll 并在可视化路径中过去:

AppDomain.CurrentDomain.BaseDirectory + "\Devices"

现在我正在尝试可视化项目:

var Collector = Activator.CreateInstance("Client","Client.Collector").Unwrap();

我只看到没有方法的 Collector 的属性(但如果有类类型的属性,我只能看到它的名称)。但我没有看到 VisualisationCollector 的方法属性。并且不能将其投射到 (VisualisationCollector) 上,因为 throw :

'无法将类型为'Client.Collector'的对象转换为'ClientInterface.VisualisationCollector'。'

当我在 Visualization to Client 中有参考时它会起作用。但我不能那样做。

编辑:

目前我已经通过这种方式实现了我想要的。但是我不喜欢第二次下载这个程序集(因为在此之前我已经用程序集加载了这个库)。但我不知道如何通过名称获取这种类型。

Assembly assembly = AppDomain.CurrentDomain.Load(File.ReadAllBytes("Devices\\Client.dll"));
var form = assembly.CreateInstance("Client.Collector").GetType();
var assembly1 = Assembly.GetAssembly(form);
var vis = (VisualisationCollector)assembly1.CreateInstance("Client.Collector");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。