2009-03-10 9 views
-1

Wie soll ich implementieren, in C#, eine Klasse eine Eigenschaft mit dem Typ von etwas enthält, und dann, dass etwas Beispiel:Objekttyp hängt von ENUM-Wert

public class MyObject{ 
    public someEnum e { get; set;} 
    public Object ObjectDependentOnE { get; set; } 
} 

Ich möchte in der Lage sein, die richtige Art zurückzukehren für mein Objekt, das von meinem enum abhängt. zum Beispiel, wenn e = 1, mein Objekt vom Typ T1 ist ...

oder vielleicht versuchen, ich somethng falsch

eine Idee zu tun?

Antwort

4

Ich bin nicht sicher, was Sie wirklich zu tun versuchen, aber es scheint, dass Generika ist, was Sie suchen:

public class MyObject<T> 
{ 
    public T SomeProperty{get;set;} 
} 

Sie T-Klassen, die eine bestimmte Schnittstelle implementieren Einschränkung kann.

Verwendung wäre:

MyObject<SomethingClass> something = new MyObject<SomethingClass>; 
+0

Das was nicht genau, was ich im Sinn hatte, aber ich denke, es wird tun müssen –

0

Ich bin nicht sicher, was Ihr Anwendungsfall wäre - mehr Informationen könnten helfen, beantworten diese besser, aber aus meiner Vermutung, können Sie stattdessen eine Factory-Klasse betrachten wollen machen . Etwas wie:

class MyClass 
{ 
    public SomeEnum E { get; set; } 
    // This might be better as : public Object GetTheObject(SomeEnum E) and eliminating the above property 
    public Object GetTheObject() 
    { 
     switch(this.E) 
     { 
     case E.Something: 
      return new MySomethingObject(); // Or return an instance that already exists...? 
     default: 
      return new MyDefaultObject(); 
     } 
    } 
} 

Dies könnte auch eine Eigenschaft mit einem Getter und Setter sein, und erhält und den spezifischen Objekttyp festgelegt.

Ich empfehle jedoch überdenken der Ansatz - das scheint wie ein sehr fehleranfälliges Design, da es keine Art Sicherheit zur Kompilierzeit hat, und ist sehr verwirrend von der Verbraucher-POV.