2009-03-10 17 views
-1

bağlıdır sonra bir şeyin türü ile mülkiyet ve içeren bir sınıf birşey örnek olun:Mülkiyet türü i C#, nasıl uygulanmalı enum değeri

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

Birazdan türü dönmek isterler enum'una bağlı olan nesnem için. e = 1, benim nesne türü T1 ise örneğin ...

ya da belki

bir fikrin yanlış seyler yapmaya çalışıyor?

cevap

4

ben gerçekten yapmaya çalışıyorsun ne olduğundan emin değilim, ama jenerik Aradığınız ne görünür:

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

Belirli bir arabirim uygulamak sınıflara T sınırlamak olabilir.

Kullanımı olacaktır:

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

Tam olarak aklımda olan şey değil ama sanırım bunu yapmak zorundayım –

0

ben Kullanım durumunuz ne olurdu emin değilim - cevap yardımcı olabilecek fazla bilgi bu daha iyi, ama benim tahmininden, bunun yerine bir fabrika sınıf yapma düşünebilirsiniz . gibi bir şey:

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(); 
     } 
    } 
} 

Bu aynı zamanda bir alıcı ve ayarlayıcı ile bir özellik olabilir ve almak ve belirli nesne türünü ayarlayabilirsiniz. Ancak, yaklaşımı yeniden düşünmeyi düşünmenizi öneririm - bu, derleme zamanında hiçbir tür güvenliğe sahip olmadığından ve tüketicinin POV'sinden çok kafa karıştırıcı olduğundan çok hataya eğilimli bir tasarıma benziyor.