-
Notifications
You must be signed in to change notification settings - Fork 3
Conventions
reddy6ue edited this page Sep 4, 2017
·
2 revisions
Conventions can be used alongside manual configuration to set up data sources and values for properties that fit a specific profile.
This system is for doing things like:
- Match any properties of type String which are called
EmailAddress
and apply anEmailDatasource
to them - Match any properties that look like
<Prefix>Name
and apply aNameDatasource
to them -
TODO: Match any properties of type
Role
and use a shared instance to populate it instead of creating a new one
A convention to set all String EmailAddress
properties to use the EmailAddressSource
public class EmailAddressPropertyConvention : ITypePropertyConvention
{
public void Apply(ITypePropertyConventionContext context)
{
context.SetSource<EmailAddressSource>();
}
public void SpecifyRequirements(ITypeMemberConventionRequirements requirements)
{
requirements.Name(x => String.Compare(x, "EmailAddress", true) == 0);
requirements.Type(x => x == typeof(String));
}
}
A convention to set all String EmailAddress
fields to use the EmailAddressSource
public class EmailAddressFieldConvention : ITypeFieldConvention
{
public void Apply(ITypeFieldConventionContext context)
{
context.SetSource<EmailAddressSource>();
}
public void SpecifyRequirements(ITypeMemberConventionRequirements requirements)
{
requirements.Name(x => String.Compare(x, "EmailAddress", true) == 0);
requirements.Type(x => x == typeof(String));
}
}