public object CreateEntityProxy(Type baseType, Puzzle.NPersist.Framework.Persistence.IObjectFactory objectFactory, Puzzle.NPersist.Framework.Mapping.IClassMap classMap, object[] ctorArgs)
        {
            Type proxyType = aopEngine.CreateProxyType(baseType);

            object[] proxyArgs = aopEngine.AddStateToCtorParams(context, ctorArgs);

            return(context.ObjectFactory.CreateInstance(proxyType, proxyArgs));
        }
        public Puzzle.NPersist.Framework.Interfaces.IInterceptableList CreateListProxy(Type baseType, Puzzle.NPersist.Framework.Persistence.IObjectFactory objectFactory, params object[] ctorArgs)
        {
            //	return Puzzle.NPersist.Framework.Proxy.ListProxyFactory.CreateProxy(baseType,objectFactory,ctorArgs) ;

            if (baseType == typeof(IInterceptableList) || baseType == typeof(InterceptableList) || baseType == typeof(IList))
            {
                baseType = typeof(InterceptableList);
                return((Puzzle.NPersist.Framework.Interfaces.IInterceptableList)context.ObjectFactory.CreateInstance(baseType, ctorArgs));
            }
#if NET2
            else if (baseType.IsGenericType && baseType.IsInterface)
            {
                Type subType     = baseType.GetGenericArguments()[0];
                Type genericType = typeof(InterceptableGenericsList <>).MakeGenericType(subType);

                return((Puzzle.NPersist.Framework.Interfaces.IInterceptableList)context.ObjectFactory.CreateInstance(genericType, ctorArgs));
            }
#endif
            else
            {
                Type     proxyType = aopEngine.CreateProxyType(baseType);
                object[] proxyArgs = aopEngine.AddStateToCtorParams(context, ctorArgs);

                return((Puzzle.NPersist.Framework.Interfaces.IInterceptableList)context.ObjectFactory.CreateInstance(proxyType, proxyArgs));
                //return Puzzle.NPersist.Framework.Proxy.ListProxyFactory.CreateProxy(baseType,objectFactory,ctorArgs) ;
            }
        }