C#类型检查泛型[重复]

问题描述 投票:3回答:4
假设我有一堂课

public class Entity<T> { ... // class definition ... }

说我有一些类似的代码:

var a = new Entity<string>(); var b = new Entity<int>(); var c = new Entity<bool>(); var d = new int; var e = new List<string>();

无论T的类型如何,如何测试对象的类型为“实体”?这样:

a is Entity // true b is Entity // true c is Entity // true d is Entity // false e is Entity // false

c# generics typechecking
4个回答
0
投票
如果要检查泛型类型是否为实体时不关心它,可以添加一个额外的类。

0
投票
[如果您所处的环境不太在乎性能,那么反射可以为您提供解决方案。但是,我建议不要使用反射,而应该让Entity<T>继承自EntityIEntity的非通用类型(请参见Silvermind的回答)。

0
投票
您可以将变量的通用类型定义与Entity类的通用类型定义进行比较。

0
投票
此作品:
© www.soinside.com 2019 - 2024. All rights reserved.