Quelqu'un peut-il définir ce que signifie exactement «POCO»? Je rencontre le terme de plus en plus souvent, et je me demande s'il ne s'agit que de classes simples ou s'il signifie quelque chose de plus?
Quelqu'un peut-il définir ce que signifie exactement «POCO»? Je rencontre le terme de plus en plus souvent, et je me demande s'il ne s'agit que de classes simples ou s'il signifie quelque chose de plus?
Réponses:
"Plain Old C # Object"
Juste une classe normale, aucun attribut décrivant des problèmes d'infrastructure ou d'autres responsabilités que vos objets de domaine ne devraient pas avoir.
EDIT - comme d'autres réponses l'ont indiqué, il s'agit techniquement de "Plain Old CLR Object", mais comme le commente David Arno, je préfère "Plain Old Class Object" pour éviter les liens avec des langages ou technologies spécifiques.
POUR CLARIFIER: En d'autres termes, ils ne dérivent pas d'une classe de base spéciale et ne renvoient aucun type spécial pour leurs propriétés.
Voir ci-dessous pour un exemple de chacun.
Exemple d'un POCO:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Exemple de quelque chose qui n'est pas un POCO:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
L'exemple ci-dessus hérite à la fois d'une classe spéciale pour lui donner un comportement supplémentaire et utilise un attribut personnalisé pour changer de comportement… les mêmes propriétés existent sur les deux classes, mais l'une n'est plus seulement un vieil objet ordinaire.
System.Object
un POCO. S'il hérite ExternalFramework.OrmMapperBase
ou quelque chose comme ça, ce n'est plus un POCO.
La plupart des gens l'ont dit - Plain Old CLR Object (par opposition à l'ancien POJO - Plain Old Java Object)
Le POJO est sorti d'EJB, ce qui vous obligeait à hériter d'une classe parent spécifique pour des choses comme les objets de valeur (ce que vous récupérez d'une requête dans un ORM ou similaire), donc si vous avez toujours voulu passer d'EJB (par exemple à Printemps), vous étiez en peluche.
Les POJO ne sont que des classes qui ne forcent pas l'héritage ou tout balisage d'attribut pour les faire "fonctionner" dans le cadre que vous utilisez.
Les POCO sont les mêmes, sauf en .NET.
Généralement, il sera utilisé autour des ORM - les anciens (et certains actuels) nécessitent que vous héritiez d'une classe de base spécifique, qui vous lie à ce produit. Les plus récents ne le font pas (nhibernate étant la variante que je connais) - il vous suffit de créer une classe, de l'enregistrer auprès de l'ORM, et c'est parti. Beaucoup plus facile.
Je peux me tromper à ce sujet .. mais de toute façon, je pense que POCO est un objet CLR Plain Old Class et il vient de POJO plain old Java Object. Un POCO est une classe qui contient des données et n'a aucun comportement.
Voici un exemple écrit en 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 signifie "Plain Old CLR Object".
Pour ajouter les autres réponses, les termes POxx semblent tous provenir de POTS ( Plain old telephone services ).
Le POX, utilisé pour définir un XML simple (ancien), plutôt que les éléments complexes à plusieurs couches associés à REST, SOAP, etc., était un terme utile et vaguement amusant. PO (insérer la langue de choix) Les termes O ont plutôt usé la plaisanterie.
Intéressant. La seule chose que je savais concernant la programmation et contenant POCO est le framework POCO C ++ .
En termes WPF MVVM, une classe POCO est une classe qui ne déclenche pas les événements PropertyChanged
Bien que je sois sûr que POCO signifie Objet Plain Old Class ou Plain Old C Object pour 99,9% des gens ici, POCO est également Animator Pro (Autodesk) construit en langage de script.
POCO est un vieil objet CLR simple, qui représente l'état et le comportement de l'application en termes de domaine problématique. c'est une classe pure, sans héritage, sans aucun attribut. Exemple:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}