我Type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)用来检索给定类型的方法数组.
问题是返回的MethodInfo可能包括由我不想要的编译器生成的方法.例如:
财产bool Enabled { get; }将获得bool get_Enabled()
事件SomethingChanged会得到
add_SomethingChanged(EventHandler)
和
remove_SomethingChanged(EventHandler)
我可以添加一些过滤器逻辑来摆脱它们,这可能会变得非常复杂.我想知道是否还有其他我可以做的事情,例如BindingFlags设置,只检索用户定义的方法?
我想使用反射来显示接口中的方法列表.
public interface IRoadVehicle
{
int WheelCount { get; }
bool IsEmergency();
}
Run Code Online (Sandbox Code Playgroud)
我使用以下代码:
foreach (var m in typeof(IRoadVehicle).GetMethods())
{
Console.WriteLine(m.Name);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果接口具有属性,我还会列出编译器生成的属性访问器.我想区分显式定义的方法和属性访问器以省略后者.
//output:
//get_WheelCount
//IsEmergency
//desired output:
//IsEmergency
Run Code Online (Sandbox Code Playgroud)
如何过滤掉与属性相关的方法?