Re: бинд типов в макросах
От: hardcase Пират http://nemerle.org
Дата: 12.04.10 06:01
Оценка: 12 (1)
Здравствуйте, Ziaw, Вы писали:

Z>При компиляции вылетают "Error: unbound type name 'BLToolkit.Data.Linq.Table[ Nemerle.MVC.Models.Person ]'" причем в двойном экземпляре. Как ему указать на тип? Кстати, когда я делал

Z>
Z>        t.Define(<[decl:
Z>            public $(propertyName : dyn) : BLToolkit.Data.Linq.Table[$(typeFullName : dyn)]
Z>            {
Z>              get { this.GetTable.[$(typeFullName : dyn)](); }
Z>            }
Z>        ]>);
Z>

Z>unbound был тип Nemerle.MVC.Models.Person.

typeFullName видимо имеет тип string. И он превращается в единственный PExpr.Ref, тогда как для правильного "понимания" компилятором имени типа там нужно передавать цепочку PExpr.Member (писал в браузере):
def full_name_to_expr(name : string) {
    match(NString.Split(name, ".")) {
        | [] => <[ () ]>
        | n :: [] => <[ $(n : dyn) ]>
        | n :: ns => ns.FoldLeft(<[ $(n : dyn) ]>, (n, acc) => <[ $acc.$(n : dyn) ]>)
    }
}
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.