.Name指的是非类型的属性或字段

问题描述

这是映射功能

 var mapData = new Map<RxHsLocationStateTbl>().TableName("test");
            mapData.Column(c => c.ContinentNamenormalized,cm => cm.WithName(nameof(RxHsLocationStateTbl.ContinentNamenormalized)));
           
            return mapData;

我是否以此方式映射属性,然后一切正常

但是如果我尝试使此过程自动化并尝试自动映射属性,那么我会收到此错误

public static Map<T> AutoMap<T>(List<string> exclude) where T : class
    {
        var tableName = typeof(T).Name.ToLower();
        var mapData = new Map<T>().TableName(tableName);
        foreach (var p in typeof(T).GetProperties())
        {
            if (!exclude.Contains(p.Name))
            {
                mapData.Column( c=> c.GetType().GetProperty(p.Name).Name,cm =>  cm.WithName(p.Name.ToLower()));
            }
        }
        return mapData;
    }

AutoMap<RxHsLocationCityTbl>(new List<string>());

错误消息:。名称引用的属性或字段不是来自 输入

这是此列函数的内部

   /// <summary>Defines options for mapping the column specified.</summary>
    public Map<TPoco> Column<TProp>(
      Expression<Func<TPoco,TProp>> column,Action<ColumnMap> columnConfig)
    {
      if (column == null) 
        throw new ArgumentNullException(nameof (column));
      if (columnConfig == null)
        throw new ArgumentNullException(nameof (columnConfig));
      MemberInfo propertyOrField = this.GetPropertyOrField<TProp>(column);
      ColumnMap columnMap;
      if (!this._columnMaps.TryGetValue(propertyOrField.Name,out columnMap))
      {
        Type memberInfoType = propertyOrField as PropertyInfo != (PropertyInfo) null ? ((PropertyInfo) propertyOrField).PropertyType : ((FieldInfo) propertyOrField).FieldType;
        columnMap = new ColumnMap(propertyOrField,memberInfoType,true);
        this._columnMaps[propertyOrField.Name] = columnMap;
      }
      columnConfig(columnMap);
      return this;
    }

我不明白。我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)