gpt4 book ai didi

c# - 可以传入通用实体并访问公共(public)属性吗?

转载 作者:行者123 更新时间:2023-11-30 16:13:25 24 4
gpt4 key购买 nike

我想要一种方法来检查是否允许某些 AccountID 用于特定操作,在这样做时,我需要在我通过的任何实体类型中获取不同的 AccountID 列表。

我可以有一个 User 实体、一个 Transaction 实体和 Product 实体等,但无论如何它们都将始终有一个 AccountID 属性。

这是一些无法工作的代码,希望能让您了解我正在努力完成的事情的要点...

public void CheckForAccountAuthorization<T>(IQueryable<T> entityWithAccountIdProperty)
{
IEnumerable<string> accountIdList
= entityWithAccountIdProperty.Select(u => u.AccountID).Distinct();

//Do More Work...

}
}

但它给了我错误:

Unknown method 'Select(?)' of 'System.Linq.IQueryable'

Unknown member 'AccountID' of 'T'

最佳答案

使用 AccountID 属性创建一些接口(interface):

public interface IAccount
{
int AccountID { get; set; }
}

并让 User 实体、Transaction 实体和 Product 实体实现它:

public class User : IAccount
{
public int AccountID { get; set; }
// ...
}

然后制作constraint on generic type parameter :

public void CheckForAccountAuthorization<T>(IQueryable<T> accounts)
where T : IAccount
{
IEnumerable<string> accountIdList
= accounts.Select(u => u.AccountID).Distinct();

// ...
}

现在您有可用的 AccountID 属性。

关于c# - 可以传入通用实体并访问公共(public)属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com