/// <summary>
        ///     Creates a <see cref="FactoryFile"/>.
        /// </summary>
        /// <param name="ns"></param>
        /// <param name="class"></param>
        /// <param name="innerUsings"></param>
        /// <param name="outerUsings"></param>
        /// <returns></returns>
        public static FactoryFile Create(string ns,
                                         Class @class,
                                         string innerUsings,
                                         string outerUsings)
        {
            var dynamicType = CreateDynamicType(@class);

            var factoryFile = (FactoryFile)Activator.CreateInstance(dynamicType);

            factoryFile.Class = @class;
            factoryFile.Namespace = ns;
            factoryFile.InnerUsings = innerUsings;
            factoryFile.OuterUsings = outerUsings;
            factoryFile.FactoryFor = @class.Inherit;

            return factoryFile;
        }
        private static Type CreateDynamicType(Class @class)
        {
            var factoryInterface = @class.Inherit.Replace('.', '_');

            return DynamicTypeBuilderService.CreateDynamicType(string.Format("{0}FactoryFile", factoryInterface), typeof(FactoryFile), factoryInterface);
        }