Dot-Net
IoC - Unity,RegisterInstance 是如何工作的,對嗎?
我正在實施 Ioc,我想確保幾件事是正確的。
- 如果我使用
RegisterInstance, 解析它總是會返回單例對象?- BootStrapper 將被載入到Global.asax或最初載入它的某個地方,這意味著所有實例都是單例的?
但我想知道如何
- 為每個解析創建一個單獨的實例,PerResolve 不適用於 RegisterInstance,它僅適用於 RegisterType。
2.如果我將依賴對像作為靜態屬性,它會以同樣的方式工作,如果我能夠為每個解析創建單獨的實例?
請幫忙?
public class ClientUser : UserServiceBase, IClientUser { private IDataServiceManager _dataServiceManager; public ClientUser() { } private IDataServiceManager DataServiceMgr { get { if (_dataServiceManager == null) _dataServiceManager = ProjectContainer.Instance.Resolve<IDataServiceManager>(); return _dataServiceManager; } }
RegisterInstance如果您想要 PerResolve 實例化,則不能使用。要麼使用RegisterInstance將始終返回相同的對象實例(即註冊實例的點),要麼使用RegisterType和定義PerResolveLifetimeManager。
RegisterInstance預設使用ContainerControlledLifetimeManager. 唯一其他有意義的終身管理器RegisterInstance是ExternallyControlledLifetimeManager.
TransientLifetimeManager並且PerResolveLifetimeManager沒有意義,因為這些生命週期必須在每次呼叫時創建新實例Resolve。
PerThreadLifetimeManager在您不控制 threading 的情況下是無用的。