【发布时间】:2014-07-02 12:27:00
【问题描述】:
如果我的术语有误,请原谅。
是否可以在D编程语言中确定类模板实例中类型参数的值?
请考虑以下类结构:
class Entity {
}
class User : Entity {
}
class Collection(E:Entity) {
}
class UsersCollection : Collection!(User) {
}
现在,可以访问“UsersCollection”,我可以确定它是 Collection 的子类,但我想确定它是(“User”)的集合的实体类型
这是我的实验:
import std.traits;
int main(){
pragma(msg, BaseTypeTuple!UsersCollection);
pragma(msg, TransitiveBaseTypeTuple!UsersCollection);
pragma(msg, BaseClassesTuple!UsersCollection);
//outputs:
//(in Collection!(User))
//(Collection!(User), Object)
//(Collection!(User), Object)
pragma(msg, UsersCollection);
pragma(msg, isInstanceOf!(Collection, UsersCollection));
//outputs:
//UsersCollection
//false
foreach(BC; BaseClassesTuple!UsersCollection){
pragma(msg, BC);
pragma(msg, isInstanceOf!(Collection, BC));
}
//outputs:
//Collection!(User)
//true
//Object
//false
return 0;
}
如您所见,BaseClassesTuple!UsersCollection 的第一个元素是“Collection!(User)”,但如何从中取出“User”?
【问题讨论】: