Herausfinden welche Typen von einem best. Generischen Typ ableiten??
-
Ich hab diverse Instancen von "Foo" Typen in einer Liste, und will nun nur die Objekte, welche von "Foo<T>" ableiten, wie kann ich das mit Reflections filtern? Die einzigste Möglichkeit dir mir einfällt, ist das ich nach Objekte welche den BasisTyp Name "Foo´1" haben... gibt ne bessere möglichkeit?
Grüße
Beispiel:
class Foo {} class Foo<T> : Foo {} class FooA : Foo<int> {} class FooB : Foo<short> {} class FooC : Foo {}
-
Hilft dir vielleicht das hier:
public interface IFoo { void Out(); } public class Foo {} public class Foo<T> : Foo, IFoo { public virtual void Out() { Console.WriteLine("Foo<T>"); } } public class FooI : Foo<int> { public override void Out() { Console.WriteLine("FooI"); } } public class FooF : Foo<float> { public override void Out() { Console.WriteLine("FooF"); } } class Program { static void Main() { Foo[] array = new Foo[] { new FooF(), new FooI(), new Foo() }; foreach(Foo f in array) if(f is IFoo) ((IFoo)f).Out(); Console.ReadKey(); }
Auch wenn ich kein Freund davon bin, zur Laufzeit mit dem Is-Operator zu prüfen, aber so könntest du die Reflection umgehen, oder seh ich das falsch?
-
Hallo FireFighter.. ja so war dan auch meine Lösung
-
Hallo ihr beiden,
es gibt auch noch die Möglichkeit mittels IsGenericType und GetGenericTypeDefinition, s. http://www.mycsharp.de/wbb2/thread.php?threadid=95067 (insbesondere der letzte Beitrag von dN!3L, wobei hier nach Interfaces überprüft wird) sowie http://www.mycsharp.de/wbb2/thread.php?threadid=60439
-
Mal rein prinzipiell: Was genau willst du mit dieser Information (wer von was ableitet) dann anstellen?