我对DI概念和Structuremap都不熟悉。我正在尝试实现这样的场景,即我的所有接口都在AssemblyA
中,而所有实现都在AssemblyB
中。我想使用Structuremap在构造函数中注入AssemblyB
类的实例,该构造函数依赖于AssemblyA
中的接口。
public class Customer(ICustomerService)
{
}
ICustomerService
接口在 AssemblyA
中,而 CustomerService
类在 assemblyB
中。我希望 Structuremap 在这个构造函数中注入 CustomerService
实例。我假设如果类的名称与接口名称相同,且以 I
为前缀,Structuremap 将自动识别它。
我编写了以下配置:
x =>
{
x.Scan(scan =>
{
scan.Assembly("AssemblyA");
scan.Assembly("AssemblyB");
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
但是它给我报错了。
StructureMap Exception Code: 202
No Default Instance defined for PluginFamily AssemblyA.ICustomerService, AssemblyA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
我希望使用默认规则,避免将每个接口注册到一个类中。