Estoy tratando de encontrar una forma genérica para asignar valores a una propiedad dictada por una expresión lambda, mire el código de ejemplo a continuación, ¿cómo sería la firma de ConverToEntities aspecto del método y cómo se llamaría?Método genérico para establecer el valor de una propiedad utilizando expresiones/lambda
static void Main()
{
List<long> ids = new List<long> {1, 2, 3};
//Non generic way
List<Data> dataItems = ids.ConvertToDataItems();
//Generic attempt!!
List<Data> differntDataItems =
ids.ConvertToEntities<Data>(p => p.DataId);
}
public class Data
{
public long DataId;
public string Name;
}
public static class ExtensionMethods
{
public static List<Data> ConvertToDataItems(this List<long> dataIds)
{
return dataIds.Select(p => new Data { DataId = p }).ToList();
}
public static List<T> ConvertToEntities<TProp>(
this List<long> entities, Func<TProp> lambdaProperty)
{
return entities.Select(p => new T {lambdaProperty}).ToList();
}
}
¿Cuál es la lista Tho? Supongo que lo que realmente quieres es una lista pública estática ConvertToEntities ... ¿o no? –
ConvertToEntities es un intento de un método genérico; es sintaxis incorrecta, estoy buscando hacer este método genérico; –
Dadas las soluciones, el '.Select' provisto con .Net es menos código ... –