我有一个方法
public void Insert<T>(T o) where T : class
{
c.Set<T>().Add(o);
}
我需要将它与对象类型一起使用
object x = ....
r.Insert(x);
但因为它是一个对象 T == object
,所以我需要它是 x.GetType()
类型
有人知道怎么做吗?
最佳答案
您基本上必须通过反射调用它(例如使用 MethodInfo.MakeGenericMethod
)。泛型是关于提供编译时 类型安全性,而您在编译时并不知道类型。或者,如果您使用的是 C# 4,则可以使用动态类型。
在以下方面使用反射是一种痛苦:
- 编译时缺乏类型安全,因此只能在测试(或生产!)中检测到错误
- 表现
- 易于编码
如果您使用的是 C# 4,动态类型解决方案将是:
dynamic d = x;
r.Insert(d);
关于c# - 将 Insert<T>(T o) 与对象类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273948/