我使用 vs2008 的 GUI 工具生成一些 LINQ to SQL 类,我的问题是 StringTemplate 无法达到这些模型的属性
$persons:{
<li>$it.name$</li>
}$
它打印:
<li></li>
<li></li>
<li></li>
name是Person模型的公共属性。如果我自己创建了一个人类,并且属性相同,StringTemplate 可以得到它。
我使用 vs2008 的 GUI 工具生成一些 LINQ to SQL 类,我的问题是 StringTemplate 无法达到这些模型的属性
$persons:{
<li>$it.name$</li>
}$
它打印:
<li></li>
<li></li>
<li></li>
name是Person模型的公共属性。如果我自己创建了一个人类,并且属性相同,StringTemplate 可以得到它。
设计者生成一个相对于编译器的普通类,代码只是自动生成的。我怀疑您还有其他问题 - 也许您没有包含正确的引用/命名空间,或者您有命名空间冲突并且它选择了错误的类。
这不是正确的解决方案,但是我遇到了同样的麻烦,并且使用$it._name$
对我有用。这是访问私有支持字段,所以不是一个好主意。尽管如此,这意味着 StringTemplate 可以找到该字段,但不能找到与之相关的name
属性。奇怪的。
编辑:
知道了。StringTemplate 假定属性以大写字母开头。因此,如果您的财产被调用Name
,它将起作用。您可以重命名您的属性或修复 StringTemplate 源代码中的有问题的代码位在
ASTExpr.cs:RawGetObjectProperty
调用周围GetPropertyValueByName
(它使用methodSuffix
,而不是propertyName
)。