public IExport CreateAnonymosWithTarget([NotNull] Type type, [NotNull] object target)
        {
            Contract.Requires<ArgumentNullException>(type != null, "type");
            Contract.Requires<ArgumentNullException>(target != null, "target");
            Contract.Ensures(Contract.Result<IExport>() != null);

            var info = new ExternalExportInfo(true, true, true, true, (context, service) => target,
                type.ToString());

            var export = new DefaultExport(type, info, true);
            export.ImportMetadata = _chain.SelectImport(export);

            return export;
        }
        /// <summary>
        ///     The create.
        /// </summary>
        /// <param name="type">
        ///     The type.
        /// </param>
        /// <returns>
        ///     The <see cref="IExport" />.
        /// </returns>
        public IExport Create(Type type, ref int level)
        {
            Contract.Requires<ArgumentNullException>(type != null, "type");

            if (!DefaultExport.IsExport(type)) return null;

            var export = new DefaultExport(
                type,
                new ExternalExportInfo(false, false, true, true, null, string.Empty),
                false);

            var attr = type.GetCustomAttribute<ExportLevelAttribute>();
            if (attr != null) level = attr.Level;

            export.ImportMetadata = _chain.SelectImport(export);

            return export;
        }
        /// <summary>
        ///     The create anonymos.
        /// </summary>
        /// <param name="type">
        ///     The type.
        /// </param>
        /// <param name="args">
        ///     The args.
        /// </param>
        /// <returns>
        ///     The <see cref="IExport" />.
        /// </returns>
        public IExport CreateAnonymos(Type type, object[] args)
        {
            Contract.Requires<ArgumentNullException>(type != null, "type");
            Contract.Ensures(Contract.Result<IExport>() != null);

            var export = new DefaultExport(
                type,
                new ExternalExportInfo(
                    true,
                    true,
                    true,
                    true,
                    (con, ps) => Activator.CreateInstance(type, args),
                    type.Name),
                true);

            export.ImportMetadata = _chain.SelectImport(export);
            return export;
        }