gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:28:31 25 4
gpt4 key购买 nike

我有一个方法

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com