我有两个模块(A和B)和'接口组件',它们保存两个模块的模型类接口。是否可以通过仅使用“接口组件”中该模型类的接口从“模块B”中的“模块A”实例化模型类,因此我可以在模块B中引用“接口组件”,而无需引用'模块A'直接在'模块B'?
public class ModuleA: IModule
{
IUnityContainer container;
public InputOutputModule(IUnityContainer container)
{
this.container = container;
}
public void Initialize()
{
container.RegisterType<IInputService, ConsoleInputService>();
}
}
和App.config:
<module assemblyFile="ModuleA.dll" moduleType="MainModuleLibrary.ModuleA, MainModuleLibrary, Version=1.0.0.0, Culture = neutral, PublicKeyToken=null" moduleName="ModuleA" >
<dependencies>
<dependency moduleName="ModuleB" />
</dependencies>
</module>
<module assemblyFile="ModuleB.dll" moduleType="CalcCommandParsingLib.ModuleB, CalcCommandParsingLib, Version=1.0.0.0, Culture = neutral, PublicKeyToken=null" moduleName="ModuleB" />
答案 0 :(得分:2)
严格来说:不,这是不可能的。您无法实例化界面;你总是只实例化类。因此,必须在任何情况下都是对“模块B”的直接或间接,静态或动态引用。
如何实现您想要的目标有多种实用选择。几个例子:
Activator.CreateInstance
动态实例化给定的类。