Exemple #1
0
        public static object CreateProxy(Type realType, params object[] paramters)
        {
            var  proxyGenerator = new DynamicProxyGenerator(realType);
            Type type           = proxyGenerator.CreateProxy(paramters.Select(r => r.GetType()).ToArray());

            return(FastObjectCreater.CreateInstance(type, paramters));
        }
Exemple #2
0
        private Object GetInjectItem(Type type, params object[] args)
        {
            var setting = _context.GetValue(type);

            if (setting != null)
            {
                Lifetime lifetime = setting.Scope;

                switch (lifetime)
                {
                case Lifetime.Singleton:
                    if (ObjCache.ContainsKey(setting.Bind))
                    {
                        return(ObjCache[setting.Bind]);
                    }

                    var instance = FastObjectCreater.CreateInstance(type, args);
                    ObjCache.Add(setting.Bind, instance);
                    return(instance);

                case Lifetime.Transient:
                    return(FastObjectCreater.CreateInstance(type, args));

                default:
                    throw new NotSupportedException("传入的lifetime不受支持:" + lifetime);
                }
            }

            return(FastObjectCreater.CreateInstance(type, args));
        }