从 C# 中的对象中删除特定属性

我正在对我的应用程序实施一些授权。我想实现具有某些角色和权限的用户只能看到某些属性。看一看:


// User Model

string lastname;

string firstname;

string birthdate;

假设用户是管理员,因此他可以看到所有用户,但不允许他看到用户的生日。


我创建了一个返回所有允许属性列表的类(如您所见,只有名字和姓氏):


public class AllowedAttributes

{

    private List<string> AllowedAttributes = new List<string>();


    public AllowedAttributes()

    {

        this.AllowedAttributes.Add("lastname");

        this.AllowedAttributes.Add("firstname");

    }


    public List<string> GetAllowedAttributes()

    {

        return this.AllowedAttributes;

    }

}

我的 NHibernate 查询如下所示:


AllowedAttributes attributes = new AllowedAttributes();


        var user = sessionService.GetDefaultSession()

            .Query<User>()

            // something like...

            // .Select(attributes.GetAllowedAttributes())

            .ToList();

有人可以帮我解决一个正确的 NHibernate 查询吗?我只想获取列表中指定的属性。


PS 在我的应用程序中,列表更长,所以只输入属性是行不通的。


杨魅力
浏览 1268回答 1
1回答

沧海一幻觉

您可以通过使用 NHibernate 投影来实现这一点。
打开App,查看更多内容
随时随地看视频慕课网APP