/// <summary> /// Obtiene un entitySearch desde un objeto, asignando las propiedades que corresponden, si el objeto no implementa las propiedades de IEntitySearch lanzará error, /// /// </summary> /// <typeparam name="T">Tipo de dato Geo, dependerá de la implementación</typeparam> /// <param name="entity">objeto a convertir</param> /// <returns></returns> public static EntityBaseSearch <T> GetEntityBaseSearch <T>(object entity) { var entitySearch = new EntityBaseSearch <T>(); entitySearch.num32 = (INum32Property[])entity.GetType().GetProperty("num32").GetValue(entity); entitySearch.dbl = (IDblProperty[])entity.GetType().GetProperty("dbl").GetValue(entity); entitySearch.dt = (IDtProperty[])entity.GetType().GetProperty("dt").GetValue(entity); entitySearch.enm = (IEnumProperty[])entity.GetType().GetProperty("enm").GetValue(entity); entitySearch.bl = (IBoolProperty[])entity.GetType().GetProperty("bl").GetValue(entity); entitySearch.geo = (IProperty <T>[])entity.GetType().GetProperty("geo").GetValue(entity); entitySearch.num64 = (INum64Property[])entity.GetType().GetProperty("num64").GetValue(entity); entitySearch.str = (IStrProperty[])entity.GetType().GetProperty("str").GetValue(entity); entitySearch.sug = (IStrProperty[])entity.GetType().GetProperty("sug").GetValue(entity); return(entitySearch); }
public void ConvertEntityToObject() { // operaciones de hash para crear las identidades. var hash = new HashEntityMockSearch(); // un id genérico. var genericId = Guid.NewGuid().ToString("N"); // objeto del modelo de base de datos. var objs = new BarrackTest() { ClientId = "1", GeographicalPoints = new GeoPointTs[] { new GeoPointTs { latitude = 1.3, longitude = 1.45 } }, Hectares = 3.4, Id = genericId, IdPlotLand = genericId, IdPollinator = genericId, IdRootstock = genericId, IdVariety = genericId, Name = "Barrack1", NumberOfPlants = 1221, PlantingYear = 1982, SeasonId = genericId }; // Creamos una entidad que coincide con el objeto de modelo de base de datos. var entity = new EntityBaseSearch <GeoPointTs> { bl = Array.Empty <BoolBaseProperty>(), created = DateTime.Now, index = (int)EntityRelated.BARRACK, dbl = new DblBaseProperty[] { new DblBaseProperty { index = (int)DoubleRelated.HECTARES, value = 3.4 } }, dt = Array.Empty <DtBaseProperty>(), enm = Array.Empty <EnumBaseProperty>(), geo = new GeographyProperty[] { new GeographyProperty { index = (int)GeoRelated.LOCATION_BARRACK, value = new GeoPointTs { latitude = 1.3, longitude = 1.45 } } }, id = genericId, num32 = new Num32BaseProperty[] { new Num32BaseProperty { index = (int)NumRelated.NUMBER_OF_PLANTS, value = 1221 }, new Num32BaseProperty { index = (int)NumRelated.PLANTING_YEAR, value = 1982 } }, num64 = Array.Empty <Num64BaseProperty>(), rel = new IRelatedId[] { new RelatedBaseId { id = genericId, index = (int)EntityRelated.PLOTLAND }, new RelatedBaseId { id = genericId, index = (int)EntityRelated.POLLINATOR }, new RelatedBaseId { id = genericId, index = (int)EntityRelated.ROOTSTOCK }, new RelatedBaseId { id = genericId, index = (int)EntityRelated.VARIETY }, new RelatedBaseId { id = genericId, index = (int)EntityRelated.SEASON }, }, str = new StrBaseProperty[] { new StrBaseProperty { index = (int)StringRelated.GENERIC_NAME, value = "Barrack1", }, new StrBaseProperty { index = (int)StringRelated.GENERIC_CORRELATIVE, value = "1" } }, sug = Array.Empty <StrBaseProperty>(), hh = hash.HashHeader(typeof(BarrackTest)), hm = hash.HashModel(objs) }; // obtenemos el entitySearch del barrack, internamente valida el hash. var barrack = (BarrackTest)Mdm.Reflection.Entities.GetEntityFromSearch(entity, typeof(BarrackTest), "trifenix.connect.test.model", s => s, new SearchElement(), hash); //assert Assert.Equal(entity.str.First().value, barrack.Name); }