StringTemplate не может отобразить атрибут LINQ для класса SQL

Я использую инструмент GUI vs2008 для генерации некоторого класса LINQ to SQL, моя проблема в том, что StringTemplate не может достичь атрибутов этой модели

$persons:{
<li>$it.name$</li>
}$

он напечатал:

<li></li>
<li></li>
<li></li>

Имя является публичной собственностью модели Person. Если я сам создаю класс person с такими же атрибутами, StringTemplate может его получить.

2 ответа

Конструктор создает обычный класс по отношению к компилятору, код просто генерируется автоматически. Я подозреваю, что у вас есть другая проблема - возможно, вы не включили правильные ссылки / пространства имен или у вас конфликт пространства имен, и он выбирает неправильный класс.

Это не правильное решение, но у меня такая же проблема, и я использую $it._name$ работает для меня. Это доступ к частному полю поддержки, хотя, так что это не очень хорошая идея. Тем не менее, это означает, что StringTemplate может найти это поле, но не name свойство идти с ним. Странный.

Редактировать:

Понял. StringTemplate предполагает, что свойства начинаются с заглавной буквы. так что если ваша собственность была названа Name это будет работать. Вы можете переименовать свои свойства или исправить обидный фрагмент кода в источнике StringTemplate по адресуASTExpr.cs:RawGetObjectProperty вокруг вызова GetPropertyValueByName (оно использует methodSuffixне propertyName).

Другие вопросы по тегам