从CodeProperty获取StringLength属性?

时间:2015-03-04 22:06:50

标签: t4

我创建了一组T4模板来为DAL生成单元类。我遇到的一个问题是根据" StringLength"提供正确长度的字符串。属性的属性。

我尝试访问CodeProperty.Attributes,但它说零属性,我知道这是不正确的。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

以防万一其他人偶然发现......

我无法使用CodeProperty来获取属性。相反,我使用以下给定我已经在我的搜索中使用CodeClass和CodeProperty:

    private int GetStringLength(CodeProperty codeProperty, CodeClass codeClass)
     {
          var type = Type.GetType(codeClass.Name); //you may need to use assembly qualified name
          var props = type.GetProperties();

          if (props != null && props.Any(p => p.Name.Equals(codeProperty.Name)))
          {
               var matchingProperty = props.First(p => p.Name.Equals(codeProperty.Name);
               var strLenAttr = (StringLengthAttribute) matchingPropery.GetCustomAttributes(typeof(StringLengthAttribute), true).FirstOrDefault();
               if (strLenAttr == null) return 0;
               return strLenAttr.MaximumLength;
          }
          return 0;
     }