# System.Composition.Convention ``` diff +namespace System.Composition.Convention { + public abstract class AttributedModelProvider { + protected AttributedModelProvider(); + public abstract IEnumerable GetCustomAttributes(Type reflectedType, MemberInfo member); + public abstract IEnumerable GetCustomAttributes(Type reflectedType, ParameterInfo parameter); + } + public class ConventionBuilder : AttributedModelProvider { + public ConventionBuilder(); + public PartConventionBuilder ForType(Type type); + public PartConventionBuilder ForType(); + public PartConventionBuilder ForTypesDerivedFrom(Type type); + public PartConventionBuilder ForTypesDerivedFrom(); + public PartConventionBuilder ForTypesMatching(Predicate typeFilter); + public PartConventionBuilder ForTypesMatching(Predicate typeFilter); + public override IEnumerable GetCustomAttributes(Type reflectedType, MemberInfo member); + public override IEnumerable GetCustomAttributes(Type reflectedType, ParameterInfo parameter); + } + public sealed class ExportConventionBuilder { + public ExportConventionBuilder AddMetadata(string name, Func getValueFromPartType); + public ExportConventionBuilder AddMetadata(string name, object value); + public ExportConventionBuilder AsContractName(Func getContractNameFromPartType); + public ExportConventionBuilder AsContractName(string contractName); + public ExportConventionBuilder AsContractType(Type type); + public ExportConventionBuilder AsContractType(); + } + public sealed class ImportConventionBuilder { + public ImportConventionBuilder AddMetadataConstraint(string name, Func getConstraintValueFromPartType); + public ImportConventionBuilder AddMetadataConstraint(string name, object value); + public ImportConventionBuilder AllowDefault(); + public ImportConventionBuilder AsContractName(Func getContractNameFromPartType); + public ImportConventionBuilder AsContractName(string contractName); + public ImportConventionBuilder AsMany(); + public ImportConventionBuilder AsMany(bool isMany); + } + public abstract class ParameterImportConventionBuilder { + public T Import(); + public T Import(Action configure); + } + public class PartConventionBuilder { + public PartConventionBuilder AddPartMetadata(string name, Func getValueFromPartType); + public PartConventionBuilder AddPartMetadata(string name, object value); + public PartConventionBuilder Export(); + public PartConventionBuilder Export(Action exportConfiguration); + public PartConventionBuilder Export(); + public PartConventionBuilder Export(Action exportConfiguration); + public PartConventionBuilder ExportInterfaces(); + public PartConventionBuilder ExportInterfaces(Predicate interfaceFilter); + public PartConventionBuilder ExportInterfaces(Predicate interfaceFilter, Action exportConfiguration); + public PartConventionBuilder ExportProperties(Predicate propertyFilter); + public PartConventionBuilder ExportProperties(Predicate propertyFilter, Action exportConfiguration); + public PartConventionBuilder ExportProperties(Predicate propertyFilter); + public PartConventionBuilder ExportProperties(Predicate propertyFilter, Action exportConfiguration); + public PartConventionBuilder ImportProperties(Predicate propertyFilter); + public PartConventionBuilder ImportProperties(Predicate propertyFilter, Action importConfiguration); + public PartConventionBuilder ImportProperties(Predicate propertyFilter); + public PartConventionBuilder ImportProperties(Predicate propertyFilter, Action importConfiguration); + public PartConventionBuilder NotifyImportsSatisfied(Predicate methodFilter); + public PartConventionBuilder SelectConstructor(Func, ConstructorInfo> constructorSelector); + public PartConventionBuilder SelectConstructor(Func, ConstructorInfo> constructorSelector, Action importConfiguration); + public PartConventionBuilder Shared(); + public PartConventionBuilder Shared(string sharingBoundary); + } + public class PartConventionBuilder : PartConventionBuilder { + public PartConventionBuilder ExportProperty(Expression> propertySelector); + public PartConventionBuilder ExportProperty(Expression> propertySelector, Action exportConfiguration); + public PartConventionBuilder ExportProperty(Expression> propertySelector); + public PartConventionBuilder ExportProperty(Expression> propertySelector, Action exportConfiguration); + public PartConventionBuilder ImportProperty(Expression> propertySelector); + public PartConventionBuilder ImportProperty(Expression> propertySelector, Action importConfiguration); + public PartConventionBuilder ImportProperty(Expression> propertySelector); + public PartConventionBuilder ImportProperty(Expression> propertySelector, Action importConfiguration); + public PartConventionBuilder NotifyImportsSatisfied(Expression> methodSelector); + public PartConventionBuilder SelectConstructor(Expression> constructorSelector); + } +} ```