public IColumnBuilder Column(Expression <Func <T, object> > property) { var propertyInfo = PropertyHelper <T> .GetProperty(property); var columnDefinition = new ColumnDefinition() { PropertyInfo = propertyInfo }; var builder = new ColumnBuilder(columnDefinition); _columnDefinitions[propertyInfo.Name] = columnDefinition; return(builder); }
public IColumnBuilder <T2> Column <T2>(Expression <Func <T, T2> > property) { var members = MemberHelper <T> .GetMembers(property); var memberInfo = members.Last(); var columnDefinition = new ColumnDefinition() { MemberInfo = memberInfo }; var builder = new ColumnBuilder <T2>(columnDefinition); var key = PocoColumn.GenerateKey(members); _columnDefinitions[key] = columnDefinition; return(builder); }
public IColumnBuilder <T2> Column <T2>(string privateProperty) { var memberInfo = ReflectionUtils.GetPrivatePropertiesForClasses(typeof(T)).FirstOrDefault(x => x.Name == privateProperty); if (memberInfo is null) { throw new Exception($"The name of the private property '{privateProperty}' does not exist of the type '{typeof(T)}'"); } var columnDefinition = new ColumnDefinition() { MemberInfo = memberInfo }; if (memberInfo.GetMemberInfoType() != typeof(T2)) { throw new Exception($"The type of the property '{memberInfo.GetMemberInfoType()}' doesn't match the generic type provided '{typeof(T2)}'"); } var builder = new ColumnBuilder <T2>(columnDefinition); var key = memberInfo.Name; _columnDefinitions[key] = columnDefinition; return(builder); }