Example #1
0
        public Type[] GetChildrenTypes()
        {
            ArrayBuilder oTypes = new ArrayBuilder();

            foreach (EntityChildrenListInfo oData in AllChildren)
            {
                oTypes.AddIfNotExists(oData.ChildType);
            }

            return((Type[])oTypes.GetArray(typeof(Type)));
        }
Example #2
0
        //
        //	Private
        //

        private static Type[] GetTypes(ICollection FieldInfoCollection)
        {
            ArrayBuilder oTypes = new ArrayBuilder();

            foreach (FieldInfo oInfo in FieldInfoCollection)
            {
                oTypes.AddIfNotExists(oInfo.FieldType);
            }

            return((Type[])oTypes.GetArray(typeof(Type)));
        }
        public static string[] FindFiles(string sRootDir, string sSearchPattern)
        {
            DirectoryInfo RootDirInfo = new DirectoryInfo(sRootDir);

            FileInfo[] fis = RootDirInfo.GetFiles(sSearchPattern);

            ArrayBuilder oArrayBuilder = new ArrayBuilder(typeof(string));

            foreach (FileInfo fi in fis)
            {
                oArrayBuilder.AddIfNotExists(fi.FullName);
            }

            return((string[])oArrayBuilder.GetArray());
        }
        public void PrecompileRules(Rule[] Rules)
        {
            if (Rules == null)
            {
                ExceptionUtil.RaiseArgumentNullException(
                    "Rules",
                    "Can't be null",
                    System.Reflection.MethodInfo.GetCurrentMethod());
            }

            lock (this)
            {
                ArrayBuilder oRulesToCompile = new ArrayBuilder();

                // Filter out rules that are already in cache and
                // redundant rules
                foreach (Rule oRule in Rules)
                {
                    if (GetStrongTypedRuleFromCache(oRule) != null)
                    {
                        // Already compiled
                        continue;
                    }

                    oRulesToCompile.AddIfNotExists(oRule);
                }

                Rule[] RulesToCompile = (Rule[])oRulesToCompile.GetArray(
                    typeof(Rule));

                StrongTypeRulesBase[] StrongTypedRules =
                    m_oStrongTypedRuleBuilder.CreateNewRules(RulesToCompile);

                for (int i = 0; i < RulesToCompile.Length; i++)
                {
                    Rule oRule = RulesToCompile[i];
                    StrongTypeRulesBase oStrongTypedRule = StrongTypedRules[i];

                    AddStrongTypedRuleToCache(
                        oRule,
                        oStrongTypedRule);
                }
            }
        }
        public static void GetAssemblyLocation(
            Assembly oRootAssembly,
            ArrayBuilder oAssemblyList,
            AssemblyName[] SystemAssemblies,
            bool bCustomOnly,
            bool bWithDependencies,
            bool includeRootAssembly = true,
            CustomAssemblyResolver assemblyResolver = null)
        {
            if (assemblyResolver != null)
            {
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(assemblyResolver.AssemblyResolveHandler);
            }

            try
            {
                if (!bCustomOnly || IsCustomAssembly(
                        SystemAssemblies,
                        oRootAssembly.GetName()))
                {
                    if (includeRootAssembly)
                    {
                        oAssemblyList.AddIfNotExists(oRootAssembly.Location);
                    }

                    if (bWithDependencies)
                    {
                        AssemblyName[] Dependencies = oRootAssembly.GetReferencedAssemblies();

                        foreach (AssemblyName oAssemblyName in Dependencies)
                        {
                            try
                            {
                                if (!bCustomOnly || IsCustomAssembly(
                                        SystemAssemblies,
                                        oAssemblyName))
                                {
                                    Assembly oDependentAssembly = Assembly.Load(oAssemblyName);

                                    // Check for circullar references
                                    if (!oAssemblyList.Contains(oDependentAssembly.Location))
                                    {
                                        GetAssemblyLocation(oDependentAssembly, oAssemblyList, SystemAssemblies, bCustomOnly, bWithDependencies, true, assemblyResolver);
                                    }
                                }
                            }
                            catch (Exception oExc)
                            {
                                Log.WriteException(oExc);
                            }
                        }
                    }
                }
            }
            finally
            {
                if (assemblyResolver != null)
                {
                    AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(assemblyResolver.AssemblyResolveHandler);
                }
            }
        }