![]() |
Generics: alle mit Base Type verwenden
Hallo,
ich habe folgendes Problem: Ich habe mehrere Objekte, die ein generisches Interface implementieren, und möchte jeweils eine generische Eigenschaft dieser Objekte verwenden, und zwar unabhängig vom jeweiligen Typ. Ich erklär das mal mit etwas Code:
Code:
Ich habe also eine Eigenschaft von IGeneric<T> und möchte diese nun nutzen, und zwar unabhängig, ob es ein IGeneric<IBase> ist, oder ein IGeneric<IDerived>, da ich nur die Eigenschaften von IBase benötige. Ein
interface IBase;
interface IDerived : IBase; interface IGeneric<T> where T: IBase;
Code:
schlägt aber natürlich bei IDerived fehl. In Java gibt es ein
if (x is IGeneric<IBase>)
Code:
aber das gibt es wohl in C# nicht.
if (x is IGeneric<?>)
Ich hoffe, jemand konnte mit folgen. Gruß xaromz |
AW: Generics: alle mit Base Type verwenden
sowas geht nicht
Deine generischen Klassen haben als Vorfahre die Generics und nicht die gekapselten Interfaces. Die Vererbungssachen kann man vor dem Generic komplett vergessen, auch sind Generigs nicht untereinander kompatibel, selbst wenn sie einen kompatiblen Typen kapseln. |
AW: Generics: alle mit Base Type verwenden
Zitat:
Code:
class Base { }
class Derived : Base { } interface IGeneric<out T> where T : Base { T Foo { get; } } ... IGeneric<Derived> a = ...; Console.WriteLine(a is IGeneric<Base>); // True var b = (IGeneric<Base>)a; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz