[Mono-dev] FindMembers() for TypeBuilder excluding overriden ones
Raja R Harinath
rharinath at novell.com
Mon Nov 14 01:05:04 EST 2005
Hi,
Atsushi Eno <atsushi at ximian.com> writes:
> In mcs(.exe) I want to get a MemberInfo array which has a certain
> name and does not contain overriden base members i.e. something
> like Type.FindMembers() with Type.FilterName (TypeBuilder.GetMethods()
> returns base ones, and it should be fine).
>
> (For example, suppose I'm building System.Xml.dll, I don't want
> XmlReader.Read() while we have XmlTextReader.Read() for XmlTextReader.)
>
> Is there any preferable way I can go, or do I have to create such one?
> It would be useful to fix one /doc bug; #76690.
I'm assuming that DeclaredOnly is too strict a filter. It's somewhat
non-trivial. If you use Expression.MemberLookup or
TypeManager.MemberLookup instead of Type.FindMembers, you can use
mi.DeclaringType != t && mi.IsVirtual && !TypeManager.IsOverride (mi)
to filter out base virtual methods. However, to ensure that it actually
is overriden, you have to compare the signatures, and/or use
GetBaseDefinition().
- Hari
More information about the Mono-devel-list
mailing list