使用对象类型插入<T>(T o)

Omu*_*Omu 3 .net c#

我有一个方法

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()类型

谁知道怎么做?

Jon*_*eet 5

你基本上必须通过反射来调用它(例如使用MethodInfo.MakeGenericMethod).泛型是关于提供编译时类型安全性,而您在编译时不知道类型.或者,如果您使用的是C#4,则可以使用动态类型.

使用反射是一个痛苦:

  • 编译时缺乏类型安全性,因此只能在测试中(或在生产中检测到错误!)
  • 性能
  • 易于编码

如果您使用的是C#4,动态类型解决方案将是:

dynamic d = x;
r.Insert(d);
Run Code Online (Sandbox Code Playgroud)