Mi expresión no es buena y me gustaría mejorarla, así que me pregunto si alguien podría explicarme si es posible crear una propiedad en una clase a la que se le pueda dar un valor durante la instanciación como esta:Expresión <Func <TModel, TProperty >> como Propiedad para la inicialización de objetos?
new Column<Product>{ ColumnProperty = p => p.Title};
o mejor aún (pero creo que estoy empujando)
new Column {ColumnProperty = p => p.Title};
con una clase algo como esto:
public class Column<TModel>
{
public Expression<Func<TModel, TProperty>> ColumnProperty { get; set; }
}
La idea básica detrás de esto es que creo una Cuadrícula a partir de un grupo de objetos Columna algo así.
List<Product> productList = GetProductsFromDb();
List<Column> columnList = new List<Column>();
columnList.Add(new Column<Product> {ColumnProperty = p => p.ProductId, Heading = "Product Id"});
columnList.Add(new Column<Product> {ColumnProperty = p => p.Title, Heading = "Title"});
Grid myGrid = new Grid(productList, columnList);
Esto puede no ser la manera más ordenada/más fácil de hacer esto, pero yo estoy interesado en saber si se puede hacer como yo quiero mejorar mi comprensión de expresiones y me encanta ser capaz de tener valores inflexible en su lugar de literales de cadenas, es mucho mejor trabajar con ellos.
Cualquier pensamiento, ideas, divagaciones sería muy apreciada
Saludos Rob
Hey idursun - gracias esto también funciona - utilicé dinámico en lugar de objeto pero el resultado es el mismo – Rob