C# 一种使用编译器用于匹配GetMethod(..)中方法的相同规则集的方法

C# 一种使用编译器用于匹配GetMethod(..)中方法的相同规则集的方法,c#,.net,aop,roslyn,C#,.net,Aop,Roslyn,我正在针对一个旧的遗留类编写AOP,该类没有内置IoC容器的好处。我正在使用动态类型的强大功能,使用DynamicObject派生类。当我使用 mi=obj.GetType().GetMethod(methNm,parmType) 如果参数类型(上面由parmType表示)与方法声明时使用的类型不完全相同,那么上面的GetMthod(..)将找不到方法 我的问题是: 您知道一种方法吗,可能使用Roslyn的语义模型,使用编译器用来将GetMethod(..)中的方法与方法的“最佳选择”匹配的同一

我正在针对一个旧的遗留类编写AOP,该类没有内置IoC容器的好处。我正在使用动态类型的强大功能,使用
DynamicObject
派生类。当我使用

mi=obj.GetType().GetMethod(methNm,parmType)

如果参数类型(上面由parmType表示)与方法声明时使用的类型不完全相同,那么上面的GetMthod(..)将找不到方法

我的问题是:
您知道一种方法吗,可能使用Roslyn的语义模型,使用编译器用来将GetMethod(..)中的方法与方法的“最佳选择”匹配的同一组规则?

此逻辑已经在Microsoft.CSharp.dll中实现,因此通过dynamic关键字的调用也可以选择正确的方法。如果您不能仅仅使用该机制,您可以查看并找出适当的方法来合并它。您可以直接调用它(所需的入口点是公共的),而无需重新生成代码。

如果您使用的是源代码(使用csproj),则可以轻松使用Roslyn。Jason,谢谢。你知道我能举个例子吗?不幸的是,我不知道。ILSpy(或其他反汇编工具)将让您知道编译器如何生成使用此工具的调用。您也可以直接查看编译器(它是开源的),但这可能有点让人困惑。