Определение "POCO"

Может ли кто-то определить, что означает "POCO"? Я встречаюсь с термином все чаще и чаще, и мне интересно, что это только о простых классах или это означает что-то еще?

Ответ 1

"Простой старый объект С#"

Просто обычный класс, без атрибутов, описывающих проблемы инфраструктуры или другие обязанности, которые не должны иметь ваши доменные объекты.

РЕДАКТИРОВАТЬ - как уже говорилось в других ответах, технически это "Простой старый объект CLR", но я, как и комментарии Дэвида Арно, предпочитаю "Простой старый объект класса", чтобы избежать связей с конкретными языками или технологиями.

ДЛЯ УТОЧНЕНИЯ: Другими словами, они не являются производными от какого-то специального базового класса и не возвращают никаких специальных типов для своих свойств.

Ниже приведен пример каждого из них.

Пример 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; }
}

Приведенный выше пример оба наследует от специального класса, чтобы придать ему дополнительное поведение, а также использует пользовательский атрибут для изменения поведения... одинаковые свойства существуют в обоих классах, но один больше не является простым старым объектом.

Ответ 2

Большинство людей сказали это - Обычный объект CLR (в отличие от предыдущего POJO - простого обычного Java-объекта)

POJO вышел из EJB, что потребовало, чтобы вы наследовали от определенного родительского класса для объектов, таких как объекты значений (что вы возвращаете из запроса в ORM или аналогичном), поэтому, если вы когда-либо хотели перейти от EJB (например, до Spring), вы были набиты.

POJO - это просто классы, которые не накладывают наследование или любую разметку атрибутов, чтобы заставить их "работать" в любых рамках, которые вы используете.

POCO те же, кроме .NET.

Как правило, он будет использоваться вокруг ORM - более старые (и некоторые из них) требуют, чтобы вы наследовали от определенного базового класса, который связывает вас с этим продуктом. Новых нет (nhibernate - вариант, который я знаю) - вы просто делаете класс, регистрируете его с ORM, и вы уходите. Намного легче.

Ответ 3

Я могу ошибаться в этом... но в любом случае, я думаю, что POCO - это CLR-объект простого старого класса, и он происходит из простого старого Java-объекта POJO. POCO - это класс, который содержит данные и не имеет поведения.

Вот пример, написанный на С#:

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}";
    }
}

Ответ 4

POCO означает "Обычный объект CLR".

Ответ 5

Чтобы добавить другие ответы, термины POxx, похоже, связаны с POTS (Обычные старые телефонные службы).

POX, используемый для определения простого (простого старого) XML, а не сложного многоуровневого материала, связанного с REST, SOAP и т.д., был полезным и смутно забавным термином. PO (выбор языка выбора). О термины скорее износили тонкую шутку.

Ответ 6

В .NET POCO - это "Обычный старый объект CLR". Это не "Обычный обычный объект С#"...

Ответ 7

В землях Java обычно "PO" означает "простой старый". Остальное может быть сложным, поэтому я предполагаю, что ваш пример (в контексте Java) - это "простой старый объект класса".

некоторые другие примеры

  • POJO (простой старый Java-объект)
  • POJI (простой старый интерфейс Java)

Ответ 8

Интересно. Единственное, что я знал, что связано с программированием, и POCO в нем - это POCO С++ framework.

Ответ 9

В условиях WPF MVVM класс POCO - это тот, который не содержит события Fire PropertyChanged

Ответ 10

Хотя я уверен, что POCO означает Plain Old Class Object или Plain Old C Object для 99,9% людей здесь, POCO также является Animator Pro (Autodesk), встроенным в язык сценариев.