在未知对象上从BaseEntity调用泛型方法
本文关键字:BaseEntity 调用 泛型方法 未知 对象 | 更新日期: 2023-09-27 18:16:41
如果我知道类型,我就会这样做;
TypeA.Get<TypeA>(Id).Delete();
我要做的是;
object ObjectA;
(BaseEntity<typeof(ObjectA)>).Get<(BaseEntity<typeof(ObjectA)>)>(Id).Delete();
不起作用,知道如何正确地做到这一点吗?
您可以:
- 使用反射同时调用
Get
和Delete
方法,或者: - 使用反射调用
Get
和dynamic
来调用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();