哪里更适合使用
class Entity<T> {}
new Entity<User>()
而不是
class Entity
{
public Entity(System.Type type)
{
}
}
new Entity(typeof(User))
在处理反射和代码生成之后,我意识到了System.Type的重要性。经过一个月的发展和熟悉后,我怀疑地回顾了我的选择。
如果您不需要反思,这可能不适用于您。
答案 0 :(得分:2)
通用方法Entity<T>
能够使用泛型类型约束在编译时强制执行规则和功能(即T
必须具有公共无参数构造函数并且是引用类型,例)。它不需要每个实例上的类型的任何存储空间,因为Entity<X>
和Entity<Y>
是谨慎的类型 - 但作为对此的重新声明:您不能拥有异构List<Entity<?>>
(出于同样的原因,除非你有一个共同的基础类型)。
如果仅在运行时知道类型,则使用泛型会更加困难。
答案 1 :(得分:1)
这取决于您在Entity中的内容。在Entity类中是否有T类型的任何字段或类型为T的方法的参数?如果您只在实体内部执行typeof(T)
,那么在第二个示例中传递System.Type可能会更简单。
另一个区别是你可以使用泛型约束,所以你可以做class Entity<T> where T: ISomeInterface
答案 2 :(得分:0)
如果你使用第二种方法,你每次都会在实体类中使用类型转换用户对象(最有可能)。如果您使用通用即第一种方法,则不需要这样做。