在未知对象上从BaseEntity调用泛型方法

本文关键字:BaseEntity 调用 泛型方法 未知 对象 | 更新日期: 2023-09-27 18:16:41

如果我知道类型,我就会这样做;

TypeA.Get<TypeA>(Id).Delete();

我要做的是;

object ObjectA;
(BaseEntity<typeof(ObjectA)>).Get<(BaseEntity<typeof(ObjectA)>)>(Id).Delete();

不起作用,知道如何正确地做到这一点吗?

在未知对象上从BaseEntity调用泛型方法

您可以:

  • 使用反射同时调用GetDelete方法,或者:
  • 使用反射调用Getdynamic来调用Delete


由于无论哪种方式都要放弃静态类型,为了简单起见,我将使用第二个选项。

var typeA = objectA.GetType();
var fEntityType = typeof(FEntity<>).MakeGenericType(typeA);
var getMethod = fEntityType.GetMethod("Get").MakeGenericMethod(typeA);
dynamic result = getMethod.Invoke(null, new object[]{ Id });
result.Delete();