2010-10-25 44 views
1

我在StackOverflow中找到了一個這裏找到的例子,一切都很順利,直到我需要註冊我的類型。RegisterType <>在Silverlight上不可見

我的Web應用程序在帶有Prism和MVVM的Silverlight 4上運行。

的例子是使用 「Microsoft.Practices.Unity」(這是一個視窗形式應用)

Bootstrapper.cs

protected override void ConfigureContainer() 
    { 
     base.ConfigureContainer(); 
     Container.RegisterType<IApplicationMenuRegistry, MenuRegistry>(); 
     Container.RegisterType<IApplicationCommands, ApplicationCommands>(); 
     Container.RegisterType<ShellViewModel, ShellViewModel>(new Microsoft.Practices.Unity.ContainerControlledLifetimeManager()); 
    } 

礦使用:Microsoft.Practices.Unity .Silverlight(web)並引發以下錯誤:

The non-generic method 'Microsoft.Practices.Unity.IUnityContainer.RegisterType(...) cannot be used with type arguments.

而構造函數RegisterType<>對我來說是不可見的。我必須註冊哪些替代品?

回答

4

我爲Silverlight使用Unity並沒有遇到此問題。

根據這篇文章,http://unity.codeplex.com/workitem/8205,你需要添加「using Microsoft.Practices.Unity;」到文件。 Resolve的通用版本是擴展方法,您需要提取名稱空間以使用它們。

顯然ReSharper可能認爲using語句不是必需的,可能會將其刪除。

希望有所幫助。

+0

是的,這是發生了什麼事。擴展方法位於Microsoft.Practices.Unity。好吧,謝謝喬! – Dorival 2010-10-27 13:59:20

相關問題