Может ли кто-то определить, что означает "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), встроенным в язык сценариев.