Birisi 'POCO'nun tam olarak ne anlama geldiğini tanımlayabilir mi? Terimle daha sık karşılaşıyorum ve bunun sadece düz sınıflarla mı ilgili olduğunu mu yoksa daha fazla şey ifade ettiğini mi merak ediyorum?
Birisi 'POCO'nun tam olarak ne anlama geldiğini tanımlayabilir mi? Terimle daha sık karşılaşıyorum ve bunun sadece düz sınıflarla mı ilgili olduğunu mu yoksa daha fazla şey ifade ettiğini mi merak ediyorum?
Yanıtlar:
"Düz Eski C # Nesnesi"
Yalnızca normal bir sınıftır; etki alanı nesnelerinizin sahip olmaması gereken altyapı kaygılarını veya diğer sorumlulukları açıklayan hiçbir özellik yoktur.
DÜZENLEME - diğer cevapların belirttiği gibi, teknik olarak "Düz Eski CLR Nesnesi" ama David Arno yorumları gibi ben, belirli diller veya teknolojilerle bağlarını önlemek için "Düz Eski Sınıf Nesnesi" tercih ederim.
AÇIKLAMAYA: Başka bir deyişle, bazı özel temel sınıflardan türetmezler ve özellikleri için herhangi bir özel tür döndürmezler.
Her birinin bir örneği için aşağıya bakın.
Bir POCO örneği:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
POCO olmayan bir şey örneği:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
Yukarıdaki örnek, ek bir davranış sağlamak için özel bir sınıftan her ikisini de devralır ve davranışı değiştirmek için özel bir öznitelik kullanır… her iki sınıfta da aynı özellikler vardır, ancak artık sadece düz eski bir nesne değildir .
System.Object
bir POCO'dur. Eğer miras ExternalFramework.OrmMapperBase
ya da buna benzer bir şey varsa, artık bir POCO değildir.
Çoğu insan bunu söyledi - Düz Eski CLR Nesnesi (önceki POJO'nun aksine - Düz Eski Java Nesnesi)
POJO, EJB'den çıktı, bu da değer nesneleri (ORM veya benzeri bir sorgudan geri döndüğünüz) gibi belirli bir üst sınıftan miras almanızı gerektirdiğinden, EJB'den (ör. Bahar), doldurulmuştun.
POJO'lar, sadece kullandığınız çerçevede "çalışmasını" sağlamak için miras veya herhangi bir nitelik işaretini zorlamayan sınıflardır.
POCO'lar .NET dışında aynıdır.
Genellikle ORM'lerin çevresinde kullanılır - daha eski (ve bazı mevcut olanlar), sizi o ürünle bağlayan belirli bir temel sınıftan miras almanızı gerektirir. Daha yeni olanlar (nhibernate bildiğim varyant) - sadece bir sınıf yaparsınız, ORM'ye kayıt olursunuz ve kapalısınız. Daha kolay.
Bu konuda yanlış olabilir .. ama neyse, sanırım POCO Düz Eski Sınıf CLR Nesne ve POJO düz eski Java Nesnesi geliyor. POCO, verileri tutan ve davranışları olmayan bir sınıftır.
İşte C # ile yazılmış bir örnek:
class Fruit
{
public Fruit() { }
public Fruit(string name, double weight, int quantity)
{
Name = name;
Weight = weight;
Quantity = quantity;
}
public string Name { get; set; }
public double Weight { get; set; }
public int Quantity { get; set; }
public override string ToString()
{
return $"{Name.ToUpper()} ({Weight}oz): {Quantity}";
}
}
POCO, "Plain Old CLR Object" anlamına gelir.
Diğer cevapları eklemek için POxx terimlerinin tümü POTS'den ( Düz eski telefon hizmetleri ) kaynaklanıyor gibi görünmektedir .
REST, SOAP vb. İle ilişkili karmaşık çok katmanlı şeyler yerine basit (düz eski) XML tanımlamak için kullanılan POX, yararlı ve belirsiz bir terimdi. PO (tercih edilen dili girin) O terimleri şakayı daha ince giymiştir.
İlginç. Programlama ile ilgili olduğunu ve içinde POCO olduğunu bildiğim tek şey POCO C ++ çerçevesi .
WPF MVVM terimleriyle, bir POCO sınıfı, PropertyChanged olaylarını Ateşlemeyen sınıftır
POCO'nun, buradaki insanların% 99,9'u için Düz Eski Sınıf Nesnesi veya Düz Eski C Nesnesi anlamına geldiğinden emin olmakla birlikte, POCO aynı zamanda Animator Pro'nun (Autodesk) komut dosyası dilinde oluşturulmuştur.
POCO, sorunun etki alanı açısından uygulamanın durumunu ve davranışını temsil eden düz eski bir CLR nesnesidir. mirassız, niteliksiz saf bir sınıftır. Misal:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}