我有一个方法
public void Insert<T>(T o) where T : class
{
c.Set<T>().Add(o);
}
Run Code Online (Sandbox Code Playgroud)
我需要将它与对象类型一起使用
object x = ....
r.Insert(x);
Run Code Online (Sandbox Code Playgroud)
但因为它是一个对象T == object,但我需要它作为x.GetType()类型
谁知道怎么做?
你基本上必须通过反射来调用它(例如使用MethodInfo.MakeGenericMethod).泛型是关于提供编译时类型安全性,而您在编译时不知道类型.或者,如果您使用的是C#4,则可以使用动态类型.
使用反射是一个痛苦:
如果您使用的是C#4,动态类型解决方案将是:
dynamic d = x;
r.Insert(d);
Run Code Online (Sandbox Code Playgroud)