c# - 泛型<T>() 与泛型(System.Type)。泛型与反射

标签 c# generics reflection

用在什么地方比较合适

class Entity<T> {}

new Entity<User>()

相反
class Entity
{
   public Entity(System.Type type) 
   {
   }
}

new Entity(typeof(User))

在处理反射和代码生成之后,我意识到了 System.Type 的重要性。经过一个月的开发和熟悉后,我带着怀疑的态度回顾自己的选择。

如果您不需要反射,这可能不适用于您。

最佳答案

通用方法 Entity<T>能够使用泛型类型约束在编译时强制执行规则和功能(例如,T 必须具有公共(public)无参数构造函数并且是引用类型)。它不需要每个实例上的类型的任何存储空间,因为 Entity<X>Entity<Y>是谨慎的类型 - 但重申一下:你不能拥有异类 List<Entity<?>> (除非你有一个共同的基本类型)出于同样的原因。

如果类型仅在运行时已知,那么使用泛型就会困难得多。

关于c# - 泛型<T>() 与泛型(System.Type)。泛型与反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8815039/

相关文章:

ios - 仅适用于数字类型的通用类型约束

c# - 通过反射创建委托(delegate)

c# - 更新时无法从下拉列表中拉出选定的值/项目

c# - 如何在 Web 应用程序中对特定用户的文件夹和文件进行身份验证

c# - Visual Studio 的 Web 性能测试可以用作 Web 场的压力测试吗?

android - 如何使用泛型或反射来显示/隐藏 fragment ? Kotlin 安卓

java - 如何在没有 Java 9+ 非法访问警告的情况下从进程获取 pid?

c# - 将 IDisposable 传递给父 IDisposable 时产生的行为是什么

objective-c - 有没有办法向协议(protocol)添加泛型类型参数?

java - 在转换中,从 T 转换为 double