“POCO”的定义

有人可以定义“POCO”的含义吗? 我越来越频繁地遇到这个词,而且我想知道这是否仅仅是简单的类,还是意味着更多的东西呢?

“Plain Old C#Object”

只是一个普通的类,没有描述你的域对象不应该有的基础设施问题或其他责任的属性。

编辑 – 正如其他答案所述,它在技术上是“普通的旧CLR对象”,但我像大卫·阿诺评论,更喜欢“普通旧类对象”,以避免与特定语言或技术的联系。

澄清:换句话说,它们不是从一些特殊的基类中派生出来的,也不会为它们的属性返回任何特殊的types。

大多数人都说过 – 普通旧CLR对象(与之前的POJO – 普通旧Java对象相反)

POJO从EJB中走出来了,它需要你从一个特定的父类inheritance类似于值对象的东西(你从ORM或类似的查询中得到的东西),所以如果你想从EJB移动到(比如spring),你塞满了。

POJO的只是不强制inheritance或任何属性标记,使他们“工作”在任何框架中使用的类。

POCO的是一样的,除了.NET。

一般来说,它会在ORM中使用 – 较老的(以及一些当前的)需要你从一个特定的基类inheritance,这个基类将你连接到那个产品。 较新的不要(nhibernate是我知道的变体) – 你只是做一个类,注册与ORM,而你是closures的。 更容易。

POCO代表“普通旧CLR对象”。

为了添加其他答案,POxx条款全部来自POTS( 普通老式电话服务 )。

用于定义简单(普通的旧)XML的POX,而不是与REST,SOAP等相关的复杂的多层次的东西,是一个有用的,含糊不清的术语。 PO(select插入语言)O条款相当破旧笑话。

我可能是错误的这个..但无论如何,我认为POCO是普通的旧 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; } } 

在Java土地上,典型的“PO”意味着“普通的老”。 剩下的可能会很棘手,所以我猜你的例子(在Java的上下文中)是“普通的旧类对象”。

一些其他的例子

  • POJO(普通的旧Java对象)
  • POJI(普通的老式java界面)

在.NET中,POCO是一个“普通的旧CLR对象”。 这不是一个“普通的旧C#对象”…

有趣。 我所知道的唯一与编程有关的东西是POCO C ++框架 。

在WPF MVVM术语中,POCO类是不会触发PropertyChanged事件的类

虽然我确定POCO是指99.9%的人在这里使用普通旧式对象或普通旧式C对象,但POCO也是使用脚本语言构build的Animator Pro(Autodesk)。