我有以下控制檯程序。但是,屬性服務爲空,並且以下代碼塊中的最後一行會引發異常。我錯過了什麼?使用Unity初始化屬性
class Program
{
static void Main(string[] args)
{
container = new UnityContainer();
container.RegisterType<Service.IService, Service.Service>();
container.RegisterType<IC1, C1>();
container.Resolve<Service.IService>();
// var c1 = container.Resolve<IC1>();
c1.Run();
}
[Depenency] C1 c1 { get; set; }
}
public class C1
{
[Depenency] Service.IService service { get; set; }
public void Run()
{
var s = service.GetSomething(); // service is null
你爲什麼要container.Resolve()的額外調用;在那裏?你正在創建一個對象,只是爲了拋出它。你不需要這樣做,當你解決IC1時,容器會自動做正確的事情 - 一旦你的財產是公開的,就是這樣。 –
@ChrisTavares我已經更新了這個問題。還有什麼我應該改變的更好的做法? – ca9163d9
嗯,現在代碼根本就不會運行,因爲你沒有解決,甚至不再聲明變量c1,而且你也沒有解析程序的一個實例,所以依賴於c1不會得到ST。所以現在你有兩個未解決的屬性,而不是一個。 –