2014-02-16 61 views
0

我是Windows Phone 8開發的新手,但之前在項目中使用過Unity。我正在嘗試註冊WP8應用程序中使用的一些實例和類型,但似乎註冊尚未完成。該容器作爲靜態類的靜態屬性保留:未在Windows Phone 8上註冊的Unity容器8

public static class Bootstrapper 
{ 
    public static UnityContainer UnityContainer { get; set; } 

    public static void InitialiseContainer() 
    { 
     UnityContainer = new UnityContainer(); 
     UnityContainer.RegisterInstance<IActivity>(new FirstActivity()); 
     UnityContainer.RegisterInstance<IActivity>(new SecondActivity()); 
     UnityContainer.RegisterType<ActionFactory>(new InjectionConstructor(UnityContainer.ResolveAll<IActivity>().ToList())); 
    } 
} 

我遇到的問題是沒有註冊正在發生。另外,如果我註釋掉UnityContainer = new UnityContainer()行,Microsoft.Practices.Unity.WindowsPhone.dll程序集中會出現異常 - Unity在Windows Phone上的行爲與Windows桌面的行爲有何不同?

+0

什麼異常被拋出? – flq

+1

「IActivity」的第二次註冊會擦除第一個。如果你沒有設置UnityContainer = new UnityContainer();那麼你的UnityContainer實例是null,並且可能會出現異常。據我所知,這兩個事實在桌面版本的Unity中都是真實的。 –

+0

@flq由於Unity容器實例爲null,因此它是'NullReferenceException'。這是一個粗略的測試,我用它來快速找出哪個組件正在被使用! – BWHazel

回答

0

我相信你將有命名您的實例:

UnityContainer.RegisterInstance<IActivity>("FirstActivity", new FirstActivity()); 
UnityContainer.RegisterInstance<IActivity>("SecondActivity", new SecondActivity());