public static Expression <Func <ExportDefinition, bool> > CreateConstraint(string contractName, string requiredTypeIdentity, IEnumerable <KeyValuePair <string, Type> > requiredMetadata, CreationPolicy requiredCreationPolicy) { ParameterExpression parameter = Expression.Parameter(typeof(ExportDefinition), "exportDefinition"); Expression constraintBody = ConstraintServices.CreateContractConstraintBody(contractName, parameter); if (!string.IsNullOrEmpty(requiredTypeIdentity)) { Expression typeIdentityConstraintBody = ConstraintServices.CreateTypeIdentityContraint(requiredTypeIdentity, parameter); constraintBody = Expression.AndAlso(constraintBody, typeIdentityConstraintBody); } if (requiredMetadata != null) { Expression metadataConstraintBody = ConstraintServices.CreateMetadataConstraintBody(requiredMetadata, parameter); if (metadataConstraintBody != null) { constraintBody = Expression.AndAlso(constraintBody, metadataConstraintBody); } } if (requiredCreationPolicy != CreationPolicy.Any) { Expression policyConstraintBody = ConstraintServices.CreateCreationPolicyContraint(requiredCreationPolicy, parameter); constraintBody = Expression.AndAlso(constraintBody, policyConstraintBody); } Expression <Func <ExportDefinition, bool> > constraint = Expression.Lambda <Func <ExportDefinition, bool> >(constraintBody, parameter); return(constraint); }
public static Expression <Func <ExportDefinition, bool> > CreateConstraint(IEnumerable <KeyValuePair <string, Type> > requiredMetadata) { ParameterExpression parameter = Expression.Parameter(typeof(ExportDefinition), "exportDefinition"); Expression metadataConstraintBody = null; if (requiredMetadata != null) { metadataConstraintBody = ConstraintServices.CreateMetadataConstraintBody(requiredMetadata, parameter); } if (metadataConstraintBody != null) { return(Expression.Lambda <Func <ExportDefinition, bool> >(metadataConstraintBody, parameter)); } return(null); }