我是依賴注入的新手,我正在開發一個使用Xamarin.Forms,Prism和Unity的應用程序。所以據我所知,在使用DI時,您希望向課程提供/注入服務,以便他們不必獲取它們。導致不瞭解服務實現的類。使用Unity Dependency Injection和Xamarin.Forms的依賴項鍊
這意味着使用構造函數注入而不是使用Container來解析服務。也看到這裏http://structuremap.github.io/quickstart。
我的設置:
[assembly: Xamarin.Forms.Dependency(typeof(Foo))]
public class Foo : IFoo
{
public IBar Bar { get; private set; }
public Foo(IBar bar)
{
Bar = bar;
}
}
[assembly: Xamarin.Forms.Dependency(typeof(Bar))]
public class Bar : IBar
{ }
現在,如果我會盡力解決的IFoo拋出一個異常:System.MissingMethodException: Default constructor not found for type Foo
這到底是怎麼回事?
我也嘗試向Foo添加一個空的構造函數,但這會導致Bar爲null
,並迫使我從IUnityContainer中解析它。
你的最後一句話是非常混亂 - 如果'container.Resolve()'作品比團結應該能夠構建酒吧就好了... –
答案很簡單 - 不使用Unity進行新開發是因爲它是[dead project](https://stackoverflow.com/q/42722926),你不太可能獲得任何支持。使用其中一個正在積極維護的[〜35其他.NET DI容器](https://github.com/danielpalme/IocPerformance)。 – NightOwl888
問題似乎是您的註冊忽略了您使用的所有單詞,它看起來像您正在使用內置在依賴項服務中的表單。嘗試註冊酒吧作爲酒吧,而不是作爲一個富...也可以爭論,直到奶牛回家的屬性VS構造注入,但你可以實現你想要的兩種方式 – snowCrabs