public static PartConventionBuilder <PartConvention> ImportConstructor(
            this PartConventionBuilder <PartConvention> builder)
        {
            builder.Imports(x => x.Import().Members(m => new[] { m.GetGreediestConstructor() }));

            return(builder);
        }
        public static PartConventionBuilder <PartConvention> ImportProperty(
            this PartConventionBuilder <PartConvention> builder, string propertyName)
        {
            if (propertyName == null)
            {
                throw new ArgumentNullException("propertyName");
            }

            builder.Imports(i => i.Import().Members(m => new[] { m.GetProperty(propertyName) }));

            return(builder);
        }
        public static PartConventionBuilder <PartConvention> ImportProperty <TPart>(
            this PartConventionBuilder <PartConvention> builder, Expression <Func <TPart, object> > expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            builder.Imports(i => i.Import().Members(m => new[] { expression.GetTargetMemberInfo() }));

            return(builder);
        }
        public static PartConventionBuilder <PartConvention> ImportField(
            this PartConventionBuilder <PartConvention> builder, string fieldName)
        {
            if (fieldName == null)
            {
                throw new ArgumentNullException("fieldName");
            }

            builder.Imports(i => i.Import().Members(m => new[] { m.GetField(fieldName) }));

            return(builder);
        }
        public static PartConventionBuilder <PartConvention> ImportProperty(
            this PartConventionBuilder <PartConvention> builder, string propertyName, Type contractType, string contractName)
        {
            if (propertyName == null)
            {
                throw new ArgumentNullException("propertyName");
            }

            if (contractType == null)
            {
                throw new ArgumentNullException("contractType");
            }

            if (contractName == null)
            {
                throw new ArgumentNullException("contractName");
            }

            builder.Imports(i => i.Import().Members(m => new[] { m.GetProperty(propertyName) }).ContractType(t => contractType).ContractName(contractName));

            return(builder);
        }