Ejemplo n.º 1
0
        public InterfaceT Resolve <InterfaceT>(string alias, string resolverName = "")
        {
            int         resultError;
            InterfaceT  result     = default;
            IResolvable resolvable = ServersHolder.GetResolvable(ref alias, out resultError);

            if (resultError == 0)
            {
                IResolverHandler resolverHandler = resolvable.GetResolver <InterfaceT>(Resolvable.RESOLVER_DEF, out _);
                resolverHandler.InvokeResolver();
                result = (InterfaceT)resolverHandler.ResolverParam;

                resolverHandler = resolvable.GetResolver <InterfaceT>(Resolvable.RESOLVER_CRT, out _);
                resolverHandler.SetParam(ref result);
                resolverHandler.InvokeResolver();

                result = (InterfaceT)resolverHandler.ResolverParam;

                if ((result != default) && !string.IsNullOrEmpty(resolverName))
                {
                    resolverHandler = resolvable.GetResolver <InterfaceT>(resolverName, out _);
                    resolverHandler.SetParam(ref result);
                    resolverHandler.InvokeResolver();
                    if (resolverHandler.OnlyOnce)
                    {
                        resolvable.RemoveResolver <InterfaceT>(resolverName, out _);
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        public IResolverHandler GetResolver <InterfaceT>(string resolverName, out int statu)
        {
            statu = 0;
            IResolverHandler handler = default;
            bool             hasRef  = mResolverIDMapper.ContainsKey(ref resolverName, out int id);

            if (hasRef)
            {
                handler = mResolvers[id];
            }
            else
            {
                statu = 1;
            }
            return(handler);
        }
Ejemplo n.º 3
0
        public void RemoveResolver <InterfaceT>(string resolverName, out int statu)
        {
            statu = 0;
            bool hasRef = mResolverIDMapper.ContainsKey(ref resolverName, out int id);

            if (hasRef)
            {
                IResolverHandler handler = mResolvers.Remove(id);
                handler.Dispose();
                mResolverIDMapper.Remove(resolverName, out statu);
            }
            else
            {
                statu = 1;
            }
        }