【发布时间】:2020-08-27 19:41:28
【问题描述】:
我在 C# 中有一个特定的对象,称之为MyCustomObject。 MyCustomObject 属于 MyNamespace.CustomObject 类型,并且该类型的每个对象都包含一个方法 MyCustomMethod。我正在尝试获取MyCustomObject.MyCustomMethod 的MethodInfo (System.Reflection.MethodInfo),以便以后可以使用它来创建表达式树。但是,如果我只使用typeof(MyCustomObject).GetMethod("MyMethodInfo"),它会为MyNamespace.CustomObject 类型的所有对象返回一个通用方法。如何获得 MethodInfo 的 MyCustomObject.MyCustomMethod?
【问题讨论】:
-
没有这样的东西。方法存在于类中,而不是类的实例中。你得到
MethodInfo和Invoke它传递你想要的实例 -
这个问题对我来说没有多大意义。我怀疑 OP 只需要使用
myInstance.GetType()而不是typeof(MyCustomObject)。 -
我要做的是构造一个调用
MyCustomObject.MyCustomMethod的表达式树,我去使用Expression.Call,但是我需要MethodInfo。如何构造一个表达式树来调用MyCustomObject.MyCustomMethod? -
@4yl1n 你做的正是你所做的。这就是您需要在该类型上调用该方法的方法信息。
-
对于对象的特定实例,没有
MethodInfo这样的东西。想一想在不使用反射的情况下你将如何/用 C# 编写什么样的代码,然后发布它来解释你正在尝试做什么。
标签: c# lambda expression expression-trees methodinfo