コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }