public abstract class Transport { public static Transport CreateTransport(Type typeToCreate) { if ( !(typeToCreate.IsSubclassOf(typeof(Transport))) ) throw new ArgumentException("Type non supporté"); return (Transport)typeToCreate.GetConstructor(Type.EmptyTypes).Invoke(null); } } public class Avion : Transport { public Avion() { /// ... } } public class Auto : Transport { public Auto() { /// ... } } public class Bateau : Transport { public Bateau() { /// ... } }
Transport transport = Transport.CreateTransport(typeof(Bateau)); Avion avion = (Avion)Transport.CreateTransport(typeof(Avion));
public abstract class Transport { public static Type[] GetAvailableTypes() { Type transportType = typeof(Transport); ArrayList liste = new ArrayList(); foreach ( Type type in transportType.Assembly.GetTypes() ) { if ( type.IsSubclassOf(transportType) ) liste.Add(type); } return (Type[])liste.ToArray(typeof(Type)); } // ... }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionAvion, Bateau, Auto
public class Vélo : Transport { public Vélo() { /// ... } }
Avion, Bateau, Auto, Vélo