SORU
30 Ocak 2009, Cuma


C# numaralama için adlandırma ve özellik eşleme

Ben sık sık bir sınıf bir numaralama olarak kendi durumunu özelliği bir çeşit bakımını kendim uygulamak: Durum numaralama ve Durumunu yazın. özelliği var Bu nasıl isim ihtilafı çözmek gerekir?

public class Car
{
  public enum Status
  {
    Off,
    Starting,
    Moving
  };

  Status status = Status.Off;

  public Status Status // <===== Won't compile =====
  {
    get { return status; }
    set { status = value; DoSomething(); }
  }
}

Eğer Durum numaralama farklı türleri için ortak olsaydı, sınıf dışında da koydum ve sorun çözülür. Ama Durum sınıfı dışında Araç sadece bu yüzden mantıklı numaralama ilan etmiyor geçerlidir.

Adlandırma ne bu durumda kullanıyor musunuz?

NOT: Bu soru kısmen this question bir cevap yorum tartışıldı. Bu değildi berianasoru çok görüş alamadım.

EDİT: özel bir durum için IMO mükemmel bir çözüm öneriyor 'Durum'. Filip Ekberg Henüz numaralama/özelliğin adı farklı olduğu çözümler hakkında okumak için ilginç, Michael Prewecki gibi olurdumcevap.

Benim en sevdiğim çözüm numaralandırma türü adı pluralize, Chris S. tarafından önerildiği gibi MS kurallarına Göre, bu bayrak numaralamalar için kullanılmalıdır. EDİT2 (Mayıs 2010): Ama onu daha çok sevmeye geldim. Ben şimdi normal numaralamalar için de kullanın.

CEVAP
30 Ocak 2009, Cuma


"", ""Ve "" bir şeye"". Devlet hareketlenmeye Başladı Off tanımı Ve bir kullanarak ima ediyorsun"","". Durumu Devlet Bu kadar!

public class Car
{
  public enum State
  {
    Off,
    Starting,
    Moving
  };

  State state = State.Off;

  public State Status
  {
    get { return state ; }
    set { state= value; DoSomething(); }
  }
}

Eğer bir kelime kullanmak istediğiniz olandan başka bir örnek alırsak, bir "Tür" bu durumda gibi

public class DataReader
{
    public enum Type
    {
        Sql,
        Oracle,
        OleDb
    }

    public Type Type { get; set; } // <===== Won't compile =====

}

Gerçekten çeteleler ve çeteleler arasında bir fark olduğunu görmek gerekir, değil mi? Ama bir çerçeve oluşturma veya simillarities üzerinde durulması gereken mimari hakkında konuşurken, Tamam onları bulmak sağlar

Bir şey bir Devlet olarak ayarlandığında, "şeyler" Durumu. " olarak tanımlanmış

Aracın Durumunu Devlet, Durdu Devlet Çalışıyor. örnek:

İkinci örnekte elde etmek istediğin şey biraz bu

myDataReader.Type = DataReader.Database.OleDb

Bu başkaları hakkında vaaz ettiğim şey karşı diyor, bir standart takip etmek gerektiğini düşünebilirsiniz. Ama, bir standart takip ediyoruz! Sql Durum Özel durum bir yanı olduğunu ve bu nedenle biraz özel bir çözüm gerekiyor.

Ancak, numaralama yeniden kullanılabilir System.Data Alanı içinde olması ve desenleri budur.

Bakmak için başka bir dava ile de "Tip" "Hayvan" yazdığınız Türler tanımlar.

public class Animal
    {
        public enum Type
        {
            Mammal,
            Reptile,
            JonSkeet
        }

        public Type Species{ get; set; }

    }

Bu aşağıdaki bir desen, değil ayrılabileceğini gerek "biliyorum" Nesnesi için bu siz değilsiniz specifing "AnimalType" veya "DataReaderType", yeniden kullanım çeteleler senin ad seçimi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gali B

    Gali B

    1 EYLÜL 2006
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006
  • TSE

    TSE

    12 Kasım 2012