如何列出省略属性访问器的接口方法公共接口IRoadVehicle{intWheelCount{get;}布尔IsEmergency();我使用以下代码:foreach(varmintypeof(IRoadVehicle).GetMethods()){Console.WriteLine(m.Name);但是,如果接口具有属性,我还会列出编译器生成的属性访问器。我想区分显式定义的方法和属性访问器以省略后者。//output://get_WheelCount//IsEmergency//desiredoutput://IsEmergency如何过滤掉与属性相关的方法?您可以使用IsSpecialName属性:foreach(varmintypeof(IRoadVehicle).GetMethods().Where(x=>!x.IsSpecialName)){//...}这将删除所有具有The给定名称的方法编译器以某种方式处理它。文档是这样说的:SpecialName位被设置为标记编译器以特殊方式处理的某些成员(例如属性访问器和运算符重载方法)。怎么样:vartype=typeof(IRoadVehicle);varaccessors=type.GetProperties().SelectMany(property=>property.GetAccessors());varmethods=type.GetMethods().Except(accessors);您也可以像DanielHilgarth提到的那样执行UseIsSpecialName之类的操作,但请注意,这也将排除其他“特殊”方法,例如运算符(不是接口问题)和事件访问器。真的,取决于你想要什么。以上就是C#学习教程:如何列出省略属性访问器的接口方法共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
