c# - 将 Insert<T>(T o) 与对象类型一起使用

标签 c# .net

我有一个方法

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/

相关文章:

c# - 我可以创建一个可以修改用户界面并且可以中止的线程吗?

c# - 将 CSV 文件上传到 SQL 服务器

c# - 使用 GC.AddMemoryPressure() 防止 OutOfMemoryException?

c# - 我知道 string.format 会装箱某些对象,当只是连接字符串时是否同样适用?

c# - 使用 ControllerFeatureProvider 禁止特定 ASP.NET Core Controller 在不同主机中可用

c# - 如何在 fiddler 中捕获服务器端 web api 调用?

c# - 是否可以使用不同的 key 对签署已签名的 .net dll?

c# - 包含 CDATA 属性的 XML 的序列化/反序列化问题

c# - 哪种方法更好地调用此id生成方法?

C# - 无法将类型 List<Product> 隐式转换为 List<IProduct>