FluentData/Builders/ActionsHandler.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
namespace FluentData
{
internal class ActionsHandler
{
private readonly BuilderData _data;
internal ActionsHandler(BuilderData data)
{
_data = data;
}
internal void ColumnValueAction(string columnName, object value, bool propertyNameIsParameterName)
{
ColumnAction(columnName, value, typeof(object), propertyNameIsParameterName);
}
private void ColumnAction(string columnName, object value, Type type, bool propertyNameIsParameterName)
{
var parameterName = "";
if (propertyNameIsParameterName)
parameterName = columnName;
else
parameterName = "c" + _data.Columns.Count.ToString();
_data.Columns.Add(new TableColumn(columnName, value, parameterName));
ParameterAction(parameterName, value, DataTypes.Object, ParameterDirection.Input, false);
}
internal void ColumnValueAction<T>(Expression<Func<T, object>> expression, bool propertyNameIsParameterName)
{
var parser = new PropertyExpressionParser<T>(_data.Item, expression);
ColumnAction(parser.Name, parser.Value, parser.Type, propertyNameIsParameterName);
}
internal void ColumnValueDynamic(ExpandoObject item, string propertyName)
{
var propertyValue = (item as IDictionary<string, object>) [propertyName];
ColumnAction(propertyName, propertyValue, typeof(object), true);
}
internal void AutoMapColumnsAction<T>(bool propertyNameIsParameterName, params Expression<Func<T, object>>[] ignorePropertyExpressions)
{
var properties = ReflectionHelper.GetProperties(_data.Item.GetType());
var ignorePropertyNames = new HashSet<string>();
if (ignorePropertyExpressions != null)
{
foreach (var ignorePropertyExpression in ignorePropertyExpressions)
{
var ignorePropertyName = new PropertyExpressionParser<T>(_data.Item, ignorePropertyExpression).Name;
ignorePropertyNames.Add(ignorePropertyName);
}
后面还有 81 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
