5
我是DI概念的新手,剛剛接觸到結構映射。我試圖完全填充一個場景,其中所有的接口位於AssemblyA
,我的所有實現均位於AssemblyB
。我想用Structuremap注入AssemblyB
類的構造函數對接口的依賴從AssemblyA
使用結構映射從多個裝配進行依賴注入
public class Customer(ICustomerService)
{
}
ICustomerService
是AssemblyA
和CustomerService
類是assemblyB
的實例。我希望Structuremap在此構造函數中注入CustomerService
實例。我假設,如果類的名稱是相同的前綴名稱和I
。結構圖會自動識別它。
我寫了下面的配置。
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
任何幫助將是有益的。我想使用默認約定並避免將每個接口註冊到一個類中。
謝謝。
好吧,我能夠理解發生了什麼。我有多個類正在執行我正在掃描的不同程序集中的接口。這產生了我在問題中報告的原始錯誤。如果只有一個類在所有掃描程序集中滿足SM的默認約定,則我在問題中發佈的代碼應該可以正常工作。我之前沒有得到它,但希望它可以幫助任何人敲打他的頭。 只要我添加了x.IncludeNamespace(「AssemblyA」);基本上我過濾了類的程序集爲SM,它開始工作:) –