从BaseEntity调用未知对象的通用方法

时间:2014-08-06 09:16:27

标签: c# generics

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

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

我想做的就是这个;

object ObjectA;

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

哪个不起作用,任何想法如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

你可以:

  • 使用反射来调用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();