以下属性:
public IMongoCollection<Student> Students
{
get
{
string returnObjectName = ??? ;
return _database.GetCollection<Student>("Student");
}
}
有没有办法在returnObjectName
中获取返回类型?我的意思是,我想在returnObjectName
中获取学生对象名称。
答案 0 :(得分:1)
使用C#6,您可以使用nameof
运算符来检索某种类型的名称:
string returnObjectName = nameof(Student);
在这种情况下,Student
是对类的引用,它提供了编译时错误的优势并支持“重构重命名”操作。
你也可以使用typeof
的反射来达到相同的效果,例如当你还不能使用C#6时:
string returnObjectName = typeof(Student).Name;
请注意,第一个(nameof
)是编译时操作,后者(typeof
)是一个运行时操作,性能稍差。
答案 1 :(得分:0)
我猜这反而写
var students = db.GetCollection<Student>("Student");
你想写
var students = db.Students();
我建议您使用扩展方法来实现此目的。一个通用扩展,并为您的每个类型添加一个。
public static class Extensions
{
public static IMongoCollection<T> Items<T>(this IMongoDatabase database)
{
return database.GetCollection<T>(typeof(T).Name);
}
public static IMongoCollection<Student> Students(this IMongoDatabase database)
{
return database.Items<Student>();
}
}
如果您没有编写特定类型的扩展程序,可以像这样使用通用扩展程序。
var students = db.Items<Student>();