Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Herkunft von Methoden/Properties ermitteln

  Alt 11. Sep 2005, 11:27
Du bist aber auch ungeduldig...

Da ich nicht weiß, ob du notfalls auch überladene/reintroduced Meber haben willst, habe ich es in einen Iterator gepackt.
Er läuft durch die gefundenen Member und gibt dir den Typen, in dem er deklariert/überschrieben wurde.

Code:
public static class TypeHandling
{
   public static IEnumerable<Type> FindDeclaringType(Type type, string memberName)
   {
      MemberInfo[] memberInfos = type.GetMember(memberName);


      foreach (MemberInfo memberInfo in memberInfos)
      {
         yield return memberInfo.DeclaringType;
      }
   }
}
Oder um es mit einem Hauch von Syntax Highlighting zu zeigen:
Delphi-Quellcode:
uses
   System.Collections.Generic,
   System.Reflection;

type
  TypeHandling = public static class
  public
      class method FindDeclaringType(&type : System.Type; memberName : String) : IEnumerable<System.Type>; iterator;
  end;
  
implementation

class method TypeHandling.FindDeclaringType(&type : System.Type; memberName : String) : IEnumerable<System.Type>;
begin
      var memberInfos := &type.GetMember(memberName);

      for memberInfo : MemberInfo in memberInfos do
         yield (memberInfo.DeclaringType);
end;

Kleines Beispiel:
Code:
TextBox myObject = new TextBox();

foreach (Type type in TypeHandling.FindDeclaringType(myObject.GetType(),
                                                     "Name"))
{
   Console.WriteLine(type.Name);
}

foreach (Type type in TypeHandling.FindDeclaringType(myObject.GetType(),
                                                     "Text"))
{
   Console.WriteLine(type.Name);
}

Console.ReadLine();
Output
Control
TextBox
  Mit Zitat antworten Zitat