“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)。