RadaCode.InDoc.Data.DocumentNaming.SpecialNamings.SpecialNamingsFactory.GetNamingProcessor C# (CSharp) Method

GetNamingProcessor() public static method

public static GetNamingProcessor ( NamingApproach approach, string namingCode ) : SpecialNamingBase
approach NamingApproach
namingCode string
return SpecialNamingBase
        public static SpecialNamingBase GetNamingProcessor(NamingApproach approach, string namingCode)
        {
            const string ns = "RadaCode.InDoc.Data.DocumentNaming.SpecialNamings.Namings";
            var dataAssembly = typeof(RadaCode.InDoc.Data.DocumentNaming.SpecialNamings.SpecialNamingBase).Assembly;

            var classes = SpecialNamingsFactory.GetAllClasses(ns, dataAssembly);

            var res = new List<string>();
            foreach (var inst in classes.Select(namingClass => string.Format("{0}.{1}", ns, namingClass)).Select(toCreate => dataAssembly.GetType(toCreate)).Select(type => Activator.CreateInstance(type, approach)).Where(inst => ((SpecialNamingBase)inst).SpecialCode == namingCode))
            {
                return inst as SpecialNamingBase;
            }

            throw new Exception(string.Format("No class found that is able to process {0} code", namingCode));
        }