有人可以定义'POCO'的含义吗?我越来越频繁地遇到这个词了,我想知道它是否只是关于普通课程还是意味着什么呢?
答案 0 :(得分:182)
“普通老C#对象”
只是一个普通的类,没有描述基础结构问题的属性或域对象不应具有的其他职责。
编辑 - 正如其他答案所述,它在技术上是“普通旧CLR对象”,但我和David Arno评论一样,更喜欢“普通旧类对象”以避免与特定语言或技术的联系。要澄清:换句话说,它们并非源自 一些特殊的基类,也不会为它们的属性返回任何特殊类型。
答案 1 :(得分:43)
大多数人都说过 - 普通的旧CLR对象(而不是之前的POJO - 普通的旧Java对象)
POJO来自EJB,它要求您从特定的父类继承诸如值对象之类的东西(从ORM或类似的查询中获取的内容),所以如果你想从EJB迁移(例如春天),你被塞满了。
POJO只是不强制继承或任何属性标记的类,使它们在你正在使用的任何框架中“工作”。
POCO是相同的,除了.NET。
通常它会在ORM周围使用 - 较旧(以及一些当前版本)要求您继承特定的基类,这会将您与该产品联系起来。新的不要(nhibernate是我所知道的变种) - 你只是创建一个类,用ORM注册它,然后你就关闭了。更容易。
答案 2 :(得分:20)
我可能错了。但无论如何,我认为POCO是Plain Old Class CLR对象,它来自POJO普通的旧Java对象。 POCO是一个保存数据且没有行为的类。
以下是用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}";
}
}
答案 3 :(得分:9)
POCO代表“Plain Old CLR Object”。
答案 4 :(得分:7)
要添加其他答案,POxx术语似乎都来自POTS(Plain old telephone services)。
用于定义简单(普通旧)XML的POX,而不是与REST,SOAP等相关的复杂多层内容,是一个有用且模糊的术语。 PO(选择插入语言)O术语相当磨损了笑话。
答案 5 :(得分:6)
在.NET中,POCO是一个普通的旧CLR对象'。它不是一个普通的旧C#对象' ...
答案 6 :(得分:5)
在Java土地中,通常“PO”表示“普通老”。其余的可能很棘手,所以我猜你的例子(在Java的上下文中)是“普通的旧类对象”。
其他一些例子
答案 7 :(得分:3)
有趣。我所知道的唯一与编程有关并且其中包含POCO的是POCO C++ framework。
答案 8 :(得分:2)
在WPF MVVM术语中,POCO类是不会触发PropertyChanged事件的类
答案 9 :(得分:1)
虽然我确信POCO对于99.9%的人来说意味着普通旧类对象或普通旧C对象,但POCO也是用脚本语言构建的Animator Pro(Autodesk)。
答案 10 :(得分:0)
POCO是一个普通的旧CLR对象,它按照问题域表示应用程序的状态和行为。 它是一个纯类,没有继承,没有任何属性。 示例:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}