加载汇编接口,无需共享公共库

Load assembly interface without sharing common library

提问人:swcraft 提问时间:4/2/2021 更新时间:4/2/2021 访问量:86

问:

我想知道是否需要在 assemblyA 和 assemblyB 之间共享公共库。 需要实现的是将 assemblyA 加载到 assemblyB 代码中,并在加载(从对象)其中一种类型后强制转换接口,如下所示。我读到了一些条件,例如在每个程序集 A 和程序集 B 中定义的两个接口之间共享的某种父类/接口。我们能否以某种方式实现完全解耦,而不必共享某种类型的公共库?

IInterfaceA
{
   string name {get; set;}
   int  age {get; set;}
   MethodA(int a);
   MethodB(int b);
}

在运行时引入 assemblyA 的当前代码如下所示:

var assembly = Assembly.LoadFrom(mainAssemblyName);
var type = assembly.GetTypes().Single(type => type.Name.Equals("InterfaceA"));
var casted = (InterfaceA)Activator.CreateInstance(type);
C# 接口 程序集加载

评论

2赞 Guru Stron 4/3/2021
回答了你的问题吗?
0赞 oleksa 4/3/2021
你说的是什么意思?这是否意味着您不希望在程序集之间有引用?decoupling
0赞 swcraft 4/3/2021
必要时,版本控制将由公共库主导。如果可以像 rest API 一样,只要符合 json 内容,我们就可以序列化和反序列化。

答: 暂无答案