Kann jemand definieren, was genau "POCO" bedeutet? Ich begegne dem Begriff immer öfter und frage mich, ob es nur um einfache Klassen geht oder ob es etwas mehr bedeutet?
Kann jemand definieren, was genau "POCO" bedeutet? Ich begegne dem Begriff immer öfter und frage mich, ob es nur um einfache Klassen geht oder ob es etwas mehr bedeutet?
Antworten:
"Einfaches altes C # -Objekt"
Nur eine normale Klasse, keine Attribute, die Infrastrukturprobleme oder andere Verantwortlichkeiten beschreiben, die Ihre Domänenobjekte nicht haben sollten.
BEARBEITEN - wie andere Antworten angegeben haben, handelt es sich technisch gesehen um "einfaches altes CLR-Objekt", aber ich bevorzuge, wie David Arno kommentiert, "einfaches altes Klassenobjekt", um Verbindungen zu bestimmten Sprachen oder Technologien zu vermeiden.
ZU KLARIFIZIEREN: Mit anderen Worten, sie stammen weder von einer speziellen Basisklasse ab, noch geben sie spezielle Typen für ihre Eigenschaften zurück.
Unten finden Sie jeweils ein Beispiel.
Beispiel eines POCO:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Beispiel für etwas, das kein POCO ist:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
Das obige Beispiel erbt beide von einer speziellen Klasse, um ihr zusätzliches Verhalten zu verleihen, und verwendet ein benutzerdefiniertes Attribut, um das Verhalten zu ändern. Für beide Klassen sind dieselben Eigenschaften vorhanden, aber eines ist nicht mehr nur ein einfaches altes Objekt.
System.Object
ist beispielsweise ein POCO. Wenn es von ExternalFramework.OrmMapperBase
oder so etwas erbt , ist es kein POCO mehr.
Die meisten Leute haben es gesagt - einfaches altes CLR-Objekt (im Gegensatz zum früheren POJO - einfaches altes Java-Objekt)
Das POJO stammt aus EJB, sodass Sie von einer bestimmten übergeordneten Klasse für Dinge wie Wertobjekte erben mussten (was Sie von einer Abfrage in einem ORM oder ähnlichem zurückerhalten), wenn Sie also jemals von EJB wechseln wollten (z. B. zu Frühling), du warst vollgestopft.
POJOs sind nur Klassen, die keine Vererbung oder Attributmarkierungen erzwingen, damit sie in dem von Ihnen verwendeten Framework "funktionieren".
POCOs sind bis auf .NET identisch.
Im Allgemeinen wird es für ORMs verwendet - ältere (und einige aktuelle) erfordern, dass Sie von einer bestimmten Basisklasse erben, die Sie an dieses Produkt bindet. Neuere nicht (nhibernate ist die Variante, die ich kenne) - Sie erstellen einfach eine Klasse, registrieren sie beim ORM und schon geht es los. Viel einfacher.
Ich kann mich irren, aber ich denke, POCO ist Plain Old Class CLR-Objekt der und es stammt von einem einfachen alten POJO-Java-Objekt. Ein POCO ist eine Klasse, die Daten enthält und kein Verhalten aufweist.
Hier ist ein Beispiel in C #:
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 steht für "Plain Old CLR Object".
Um die anderen Antworten hinzuzufügen, scheinen alle POxx-Begriffe von POTS ( Plain old phone services ) zu stammen.
Der POX, der verwendet wurde, um einfaches (einfaches altes) XML zu definieren, und nicht das komplexe mehrschichtige Material, das mit REST, SOAP usw. verbunden ist, war ein nützlicher und vage amüsanter Begriff. PO (Sprache der Wahl einfügen) O Begriffe haben den Witz eher dünn getragen.
Interessant. Das einzige, was ich wusste, das mit Programmierung zu tun hatte und POCO darin hatte, ist das POCO C ++ Framework .
In WPF MVVM-Begriffen ist eine POCO-Klasse eine Klasse, die keine PropertyChanged-Ereignisse auslöst
Während ich sicher bin, dass POCO für 99,9% der Menschen hier ein einfaches altes Klassenobjekt oder ein einfaches altes C-Objekt bedeutet, ist POCO auch Animator Pro (Autodesk), das in Skriptsprache erstellt wurde.
POCO ist ein einfaches altes CLR-Objekt, das den Status und das Verhalten der Anwendung in Bezug auf ihre Problemdomäne darstellt. Es ist eine reine Klasse, ohne Vererbung, ohne Attribute. Beispiel:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}