c# - 通用参数 : ensure different types

标签 c# generics

<分区>

我有一个带有两个通用参数的类。我想将第二个通用参数限制为与第一个不同的类型。有没有办法在编译时做出这样的限制?在运行时检查类型不是很有用。

public class Test<A, B>
    where B : not_typeof(A)
{
    // ...
}

最佳答案

唯一的方法是在运行时。

我改编自 answer 的答案我在评论中发帖了。

public class Test<A, B> {

    static Test() {
        if (typeof(B) == typeof(A)) {
            throw new NotSupportedException("Argument B is not supported.");
        }
    }
}

关于c# - 通用参数 : ensure different types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309063/

相关文章:

c# - Kentico CMS 10 - DocumentHelper 附件 URL

c# - 这些泛型类型在什么场景下统一?

java - 无界通配符类型 List<?> 和原始类型 List 有什么区别?

objective-c - 为什么通用 NSDictionary 不警告我键入错误的键插入/分配?

c# - Generics & Reflection - GenericArguments[0] 违反类型约束

c# - 如何在 .NET 中检测 mp3 的频率?

c# - 用于链接查询组合的 Linq 语法

c# - MVC4 + async/await + 在 Action 完成前返回响应

c# - 奇怪的诊断错误,预定义类型系统...未定义或导入

java - 实例化类型 <?> 的泛型类