有人能定义一下“POCO”的确切含义吗?我越来越频繁地遇到这个术语,我想知道它只是关于普通类还是意味着更多的东西?
当前回答
在WPF MVVM术语中,POCO类是不触发PropertyChanged事件的类
其他回答
大多数人都说过它- Plain Old CLR对象(相对于早期的POJO - Plain Old Java对象)
POJO来自EJB,它要求您从特定的父类继承诸如值对象(从ORM或类似的查询中返回的内容)之类的内容,因此如果您想从EJB迁移(例如到Spring),就会被填充。
POJO只是一些类,它们不强制继承或任何属性标记来让它们在你使用的任何框架中“工作”。
POCO是相同的,除了在。net中。
一般来说,它将用于ORM -旧的(和一些当前的)要求您从特定的基类继承,这将您与该产品联系在一起。更新的没有(nhibernate是我知道的变种)-你只是创建一个类,注册到ORM,然后你就离开了。容易得多。
普通的旧式c#对象
只是一个普通的类,没有描述基础结构关注点的属性,也没有域对象不应该具有的其他职责。
编辑-正如其他答案所陈述的,它在技术上是“普通的CLR对象”,但我,像David Arno评论一样,更喜欢“普通的旧类对象”,以避免与特定的语言或技术联系在一起。
澄清一下:换句话说,他们不是从 一些特殊的基类,它们的属性也不返回任何特殊类型。
请参见下面的每个示例。
POCO的例子:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
不是POCO的例子:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
上面的例子既继承了一个特殊的类来赋予它额外的行为,也使用了一个自定义属性来改变行为……两个类中存在相同的属性,但其中一个不再只是一个普通的旧对象。
在。net中,POCO是一个“普通的旧式CLR对象”。它不是一个“普通的旧c#对象”……
在爪哇地区,“PO”通常是“普通的旧”的意思。其余的可能会很棘手,所以我猜您的示例(在Java上下文中)是“普通的旧类对象”。
其他一些例子
POJO(普通java对象) POJI(普通的旧java接口)
在WPF MVVM术语中,POCO类是不触发PropertyChanged事件的类
推荐文章
- 在TypeScript / Angular中什么时候使用Interface和Model
- 在Java中检查一个类对象是否是另一个类对象的子类
- Java:我如何从泛型类型获得一个类文字?
- 如何为类本身(而不是类的实例)选择自定义字符串表示?
- 如何让PHP类构造函数调用父类的父类构造函数?
- Swift:测试switch语句中的类类型
- 为什么在实体框架模型定义中对类属性使用“虚”?
- 最好的方法加载模块/类从lib文件夹在Rails 3?
- “少”的定义
- Java:在一个文件中有多个类声明
- 使用linq选择distinct
- 如何使用类<T>在Java?
- 在几十个JAR文件中找到一个类?
- 在Java中Integer和int的区别是什么?
- 跨文件组织Python类的可能性?