-
Notifications
You must be signed in to change notification settings - Fork 380
Setting by attributes
When a property decorated with [AdaptIgnore], that property will be excluded from Mapping. For example, if we would like to exclude price to be mapped.
public class Product {
public string Id { get; set; }
public string Name { get; set; }
[AdaptIgnore]
public decimal Price { get; set; }
}You can ignore members annotated with any attributes by using the IgnoreAttribute method.
TypeAdapterConfig.GlobalSettings.Default
.IgnoreAttribute(typeof(JsonIgnoreAttribute));However IgnoreAttribute will ignore both source and destination. If you would like to ignore only one side, you can use IgnoreMember.
config.IgnoreMember((member, side) => member.HasCustomAttribute(typeof(NotMapAttribute)) && side == MemberSide.Source);Map to different name
With AdaptMember attribute, you can specify name of source or target to be mapped. For example, if we would like to map Id to Code.
public class Product {
[AdaptMember("Code")]
public string Id { get; set; }
public string Name { get; set; }
}Map to non-public members
You can also map non-public members with AdaptMember attribute.
public class Product {
[AdaptMember]
private string HiddenId { get; set; }
public string Name { get; set; }
}You can rename member to be matched by GetMemberName. For example, if we would like to rename property based on JsonProperty attribute.
TypeAdapterConfig.GlobalSettings.Default
.GetMemberName(member => member.GetCustomAttributes(true)
.OfType<JsonPropertyAttribute>()
.FirstOrDefault()?.PropertyName); //if return null, property will not be renamedAnd if we would like to include non-public members decorated with JsonProperty attribute, we can do it by IncludeAttribute.
TypeAdapterConfig.GlobalSettings.Default
.IncludeAttribute(typeof(JsonPropertyAttribute));- Configuration
- Config inheritance
- Config instance
- Config location
- Config validation & compilation
- Config for nested mapping
- Custom member matching logic
- Constructor mapping
- Before & after mapping
- Setting values
- Shallow & merge mapping
- Recursive & object references
- Custom conversion logic
- Inheritance