IoC - Unity,RegisterInstance如何工作,我是对的吗?

Waq*_*qas 8 .net singleton ioc-container unity-container

我正在实施Ioc,我想确保一些正确的事情.

  1. 如果我使用RegisterInstance,在解析它时将始终返回单例对象?
  2. BootStrapper将加载到Global.asax或最初将加载的某个地方,这意味着所有实例都将是单例?

但我想知道如何
1.每个解析创建一个单独的实例,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;
        }
    }    
Run Code Online (Sandbox Code Playgroud)

Lad*_*nka 13

RegisterInstance如果您想要PerResolve实例化,则无法使用.使用RegisterInstance哪个将始终返回对象的相同实例(即注册实例的点)或使用RegisterType和定义PerResolveLifetimeManager.

RegisterInstance默认使用ContainerControlledLifetimeManager.唯一有意义的终身经理RegisterInstanceExternallyControlledLifetimeManager.

TransientLifetimeManager并且PerResolveLifetimeManager没有意义,因为这些生命周期必须在每次打电话时创建新实例Resolve.

PerThreadLifetimeManager 在您不控制线程的情况下没用.