具有多种类型的一个参数的C#泛型方法

标签 c# generics

我在编写通用方法来检索 AD 组或用户时遇到问题,该方法的参数可以是两种类型之一 - System.DirectoryServices.AccountManagement GroupPrincipalUserPrincipal

方法如下:-

private static IEnumerable<string> GetGroupsOrUsers<T>(T GroupOrUserPrincipal)
{
   PrincipalSearcher ps = new PrincipalSearcher();
   ps.QueryFilter = GroupOrUserPrincipal;

   etc.........
}

问题是 GroupOrUserPrincipal 显示以下错误:-

Cannot implicitly convert type 'T' to System.DirectoryServices.AccountManagement.Principal

我能做到这一点还是我错过了什么?

最佳答案

你应该限制T对您的方法有意义的类型:

private static IENumerable<string> GetGroupsOrUsers<T>(T GroupOrUserPrincipal)
        where T : Principal
{
      // .....

这会阻止调用 GetGroupsOrUsers<int> ,并让 T隐式转换为 Principal ,修复你的错误(或者我希望如此)。

关于具有多种类型的一个参数的C#泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8062782/

相关文章:

c# - 如何获取 WPF 用户控件可见部分的大小?

C# 自定义通用结构,具有与 Nullable<T> 相同的编译器行为

c# - 左连接两个具有特定参数的数据表

java - 定义实现多个接口(interface)的类型集合?

Class 的 Java 泛型问题

c# - 在 XNA 4.0 中绘制大量带纹理的立方体

c# - 检测从系统屏幕返回

Java通用用法问题

java - 使用 List<?> 成员定义抽象泛型类

java - 可选或默认通用参数