【发布时间】:2011-12-25 03:43:16
【问题描述】:
我在编写用于检索 AD 组或用户的通用方法时遇到问题,其参数可以是两种类型之一 - System.DirectoryServices.AccountManagement GroupPrincipal 或 UserPrincipal
方法如下:-
private static IEnumerable<string> GetGroupsOrUsers<T>(T GroupOrUserPrincipal)
{
PrincipalSearcher ps = new PrincipalSearcher();
ps.QueryFilter = GroupOrUserPrincipal;
etc.........
}
问题是 GroupOrUserPrincipal 显示以下错误:-
无法将类型“T”隐式转换为 System.DirectoryServices.AccountManagement.Principal
我能做到这一点还是我错过了什么?
【问题讨论】:
-
快速提问。为什么不为组编写一种方法,为用户编写另一种方法?
-
这就是我所做的,但只是想使用一种方法对其进行一些简化 - 这种方法中有更多代码,所以实际上是为了避免重复。
-
GroupPrincipal 和 UserPrincipal 是从 Principal 派生的?
-
几个指向类型约束的好答案 - 但如果您不希望您的代码适用于任何其他主体类型,那么这些答案将会失败,例如一个 ComputerPrincipal (即您的意思是您希望它适用于您列出的两种类型,而不适用于其他类型?)
-
@J. Kommer - 我的意思是,OP 请求了一些适用于
GroupPrincipal和UserPrincipal的东西 - 我试图询问这是否是该方法应该适用的 exclusive 类型列表。 .