我有一个问题,写一个通用的方法,以获取广告组或用户,可以是两种类型之一的参数-无论是System.DirectoryServices.AccountManagement GroupPrincipal或UserPrincipal
方法如下: -
private static IEnumerable<string> GetGroupsOrUsers<T>(T GroupOrUserPrincipal)
{
PrincipalSearcher ps = new PrincipalSearcher();
ps.QueryFilter = GroupOrUserPrincipal;
etc.........
}
Run Code Online (Sandbox Code Playgroud)
问题是GroupOrUserPrincipal显示以下错误: -
无法将类型'T'隐式转换为System.DirectoryServices.AccountManagement.Principal
我能做到这一点还是我错过了什么?
您应该限制T您的方法有意义的类型:
private static IENumerable<string> GetGroupsOrUsers<T>(T GroupOrUserPrincipal)
where T : Principal
{
// .....
Run Code Online (Sandbox Code Playgroud)
这可以防止调用GetGroupsOrUsers<int>,并且可以T隐式转换为Principal修复错误(或者我希望如此).