从 CodeProperty 获取 StringLength 属性?
Get StringLength attribute from CodeProperty?
我创建了一组 T4 模板来为 DAL 生成单元 类。我遇到的一个问题是根据实体属性的 "StringLength" 属性提供正确长度的字符串。
我尝试访问 CodeProperty.Attributes,但它说有零个属性,我知道这是不正确的。
如有任何帮助,我们将不胜感激!
以防其他人偶然发现这个……
我无法利用 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;
}
我创建了一组 T4 模板来为 DAL 生成单元 类。我遇到的一个问题是根据实体属性的 "StringLength" 属性提供正确长度的字符串。
我尝试访问 CodeProperty.Attributes,但它说有零个属性,我知道这是不正确的。
如有任何帮助,我们将不胜感激!
以防其他人偶然发现这个……
我无法利用 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;
}