获取返回对象名称

时间:2017-01-02 10:11:17

标签: c#

以下属性:

public IMongoCollection<Student> Students
{
    get
    {
        string returnObjectName = ??? ;
        return _database.GetCollection<Student>("Student");
    }
}

有没有办法在returnObjectName中获取返回类型?我的意思是,我想在returnObjectName中获取学生对象名称。

2 个答案:

答案 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>();