Class ';POCO&x27;定义

Class ';POCO&x27;定义,class,poco,Class,Poco,有人能定义“POCO”的确切含义吗?我越来越频繁地遇到这个术语,我想知道它是关于普通类,还是意味着更多?“普通的旧C#Object” 只是一个普通的类,没有描述基础设施问题或域对象不应该具有的其他职责的属性 编辑-正如其他答案所述,它在技术上是“普通的旧CLR对象”,但我和David Arno评论一样,更喜欢“普通的旧类对象”,以避免与特定语言或技术的联系 澄清一下:换句话说,它们不是从 一些特殊的基类,它们也不会为其属性返回任何特殊类型 请参见下面的每个示例 POCO的示例: public c

有人能定义“POCO”的确切含义吗?我越来越频繁地遇到这个术语,我想知道它是关于普通类,还是意味着更多?

“普通的旧C#Object”

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

编辑-正如其他答案所述,它在技术上是“普通的旧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; }
}
上面的示例都是从一个特殊类继承来的,以赋予它额外的行为,并使用一个自定义属性来更改行为……两个类上都存在相同的属性,但其中一个不再只是一个普通的旧对象。

在Java语言中,“PO”通常表示“普通的旧对象”。其余部分可能很棘手,所以我猜您的示例(在Java上下文中)是“普通的旧类对象”

其他一些例子

  • POJO(普通旧java对象)
  • POJI(普通旧java接口)

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

要添加其他答案,POxx术语似乎都源于POTS()


POX是一个有用的术语,它用来定义简单(普通的旧)XML,而不是与REST、SOAP等相关的复杂的多层内容。PO(insert language of choice)O术语已经把这个笑话说得太离谱了。

大多数人都说它是一个普通的旧CLR对象(与早期的POJO相反,它是一个普通的旧Java对象)

POJO一个来自EJB,它要求您从特定的父类继承值对象(您从ORM或类似的查询中得到的内容)之类的内容,因此如果您想要从EJB(例如到Spring)移动,您就被塞住了

POJO只是不强制继承或任何属性标记使其在您使用的任何框架中“工作”的类

POCO是相同的,除了在.NET中


通常,它会在ORM中使用——旧的(和一些当前的)要求您从特定的基类继承,这将您与该产品联系起来。新的没有(我知道nhibernate是变体)-你只需要创建一个类,在ORM中注册它,然后你就离开了。更简单。

有趣。我所知道的唯一一件与编程有关的事情就是POCO

在WPF MVVM术语中,POCO类是不触发PropertyChanged事件的类。在.NET中,POCO是“普通的旧CLR对象”。这不是一个“普通的旧C#object”…

我可能错了。。但无论如何,我认为POCO是普通的旧类CLR对象,它来自POJO普通的旧Java对象。POCO是一个保存数据且没有行为的类

下面是一个用C#编写的示例:

类水果
{
公共水果(){}
公共水果(字符串名称、双倍重量、整数数量)
{
名称=名称;
重量=重量;
数量=数量;
}
公共字符串名称{get;set;}
公共双权重{get;set;}
公共整数数量{get;set;}
公共重写字符串ToString()
{
返回$“{Name.ToUpper()}({Weight}oz:{Quantity}”;
}
}

虽然我确信POCO对这里99.9%的人来说意味着普通的旧类对象或普通的旧C对象,但POCO也是Animator Pro(Autodesk)内置的脚本语言。

POCO是一个普通的旧CLR对象,代表应用程序在其问题域中的状态和行为。 它是一个纯类,没有继承,没有任何属性。 例如:

public class Customer
{
    public int Id { get; set; }

    public string Name { get; set; }
}

我会将POCO视为一个普通的旧类,而不是试图成为流行模式集的一部分。不过我也喜欢你的答案。同意——我不喜欢C#名称,但这是我第一次听到这个问题时听到的:)类然后适合POJO、POVBO POC#O、POC++O、PORO等等。这在我个人看来并不是一个好答案,因为有些人也很好奇。好的,所以没有描述基础设施的属性(你所说的属性和基础设施是什么意思…例如DB连接?什么?请举个例子)。您的域对象不应该有什么职责?那么POCO基本上是一个域对象(BL对象)?因此,实际上POCO只是业务层对象/域对象的另一个首字母缩略词,它的意思都是一样的。POCO/Business Layer Object/Domain Object==同一个该死的东西,同一个概念只有3个不同的首字母缩略词,对吧?这个回答完全没有告诉我它在现实世界中是什么……只是一个任何人都可以在维基百科上查到的定义。一些POCO类的例子怎么样??以及它们在上下文中是POCO的原因。例如,您编写的一个仅从
System.Object
继承的类就是POCO。如果它继承自
ExternalFramework.OrmMapperBase
或类似的东西,那么它就不再是POCO了。为了完整起见,CLR支持公共语言运行时--.net虚拟机..net 3.5 sp1 ORM示例:实体框架要求类继承自某个框架类。LINQ to SQL没有此要求。因此,LINQtoSQL与POCOs一起工作,而实体框架不工作?那么,这在上下文或现实世界中意味着什么呢?正如我高中的电学老师所说,“……橙子尝起来像橙子”,对吧,但这篇文章看起来更像是一篇评论,而不是一个答案,因为它并没有完全回答这个问题。同样有趣的是,“poco”是一个西班牙语单词,意思是“少,不是多”。因此,它非常适合这种情况!它在意大利语中的意思也完全相同:)在葡萄牙语中的意思是一个错误,因为它的拼写是:“pouco”.S