-
Notifications
You must be signed in to change notification settings - Fork 1
Fluent Interface Type Configuration es
Una de las maneras disponibles para la personalización de la comparación de objetos por propiedad es utilizar un objeto de configuración de tipo. Este objeto está diseñado con interfaz fluida en mente para simplificar su uso.
IMPORTANTE: Este tipo de configuración es global. Esto quiere decir que la configuración hecha a través del objeto de configuración de tipo es almacenada globalmente dentro del almacenamiento del escáner. Los objetos comparadores de objetos que se crean después de la configuración de tipo usarán los valores configurados por este método. La configuración hecha a través de este método puede ser sobreseída localmente usando configuración de comparador de interfaz fluida.
Es posible que el código fuente de un tipo de datos particular no esté disponible para modificación, o no es deseable modificarle usando configuración por atributos. Para estos casos existe la posibilidad de configurar usando un objeto de configuración de tipo.
El método Scanner.ConfigureType() crea este objeto. El objeto permite interfaz fluida, así que las llamadas a los métodos pueden ser encadenados.
//Configurar el tipo de datos PurchaseOrder. Los cambios serán globales.
var configType = Scanner.ConfigureType<PurchaseOrder>();El objeto de configuración de tipo tiene el método IgnoreProperty() que permite ignorar una propiedad durante la comparación por propiedad. Debido a que el objeto de configuración de tipo no está ligado en este punto a un tipo de datos blanco en particular, este método permite ignorar una propiedad para la comparación contra objetos del mismo tipo, objetos de diferente tipo, o todos los objetos.
Todas las demás configuraciones como mapeo de propiedades requiere de un tipo de datos blanco específco. Para realizar estas configuraciones, ejecute el método ForType(), que crea un objeto de configuración de tipo blanco dependiente.
El método MapProperty() crea un mapa de propiedad entre una propiedad del tipo de datos fuente y una propiedad en el tipo de datos blanco. También permite establecer la coerción a texto.
El método IgnoreProperty() ignora la propiedad especificada para los propósitos de comparación por propiedad cuando objetos del tipo de datos fuente son comparados contra objetos del tipo de datos blanco.
Finalmente, el método ForType() en esta clase es exactamente el mismo encontrado en el objeto de configuración de tipo. Se encuentra aquí para simplificar y facilitar el encadenamiento de las llamadas a los métodos de configuración.
En el siguiente ejemplo se provee la configuración para el tipo de datos PurchaseOrder y luego se configura para PurchaseOrderVM y PurchaseOrderDto.
var poConfig = Scanner.ConfigureType<PurchaseOrder>();
//Ignorar la propiedad Id cuando se compara contra cualquier otro tipo de datos
poConfig.IgnoreProperty(src => src.Id, IgnorePropertyOptions.IgnoreForOthers)
//Moverse a la combinación específica PurchaseOrder--PurchaseOrderVM.
.ForType<PurchaseOrderVM>()
//PurchaseOrder.CreatedOn => PurchaseOrderVM.SubmissionDate
.MapProperty(src => src.CreatedOn, dst => dst.SubmissionDate)
//Etc. Se entiende bien, ¿cierto?
.MapProperty(src => src.ModifiedOn, dst => dst.ModifiedDate)
.IgnoreProperty(src => src.CreatedBy)
//Moverse a la combinación específica PurchaseOrder--PurchaseOrderDto.
.ForType<PurchaseOrderDto>()
.MapProperty(src => src.CreatedOn, dst => dst.RecordCreated);Para más información acerca de la rutina de comparación y los resultados de comparación vea Interpretación del Resultado de la Comparación de una Propiedad y Personalización de la Comparación de Valores de Propiedades.