Plain old CLR object

Ein Plain Old CLR Object (wörtlich: einfaches altes CLR Objekt) oder ein Plain Old Class Object (zu wörtlich: einfaches altes Klassen-Objekt) – kurz: POCO – ist in der Programmierung ein einfaches Objekt, das in der .NET-Common Language Runtime (CLR) erstellt wurde und nicht durch Vererbung oder Attribute belastet ist. Dies wird häufig im Gegensatz zu den komplexen oder spezialisierten Objekten verwendet, die objektrelationale Abbildungs-Frameworks häufig benötigen. Im Wesentlichen ist ein POCO nicht von einem externen Framework abhängig.

Etymologie

Plain Old CLR Object ist ein Kunstbegriff, welcher von plain old Java object aus der Jakarta-EE-Programmierwelt abgeleitet und durch Martin Fowler im Jahr 2000 geprägt wurde. POCO wird häufig in Verbindung mit C#-Objekten verwendet, obwohl POCO-Klassen/-Objekte auch mit anderen Programmiersprachen erstellt werden können. Ein anderes alternatives Akronym dafür ist Plain Old .NET Object.

Vorteile

Einige Vorteile von POCOs sind:

Beispiel

// Diese Klasse ist eine POCO Klasse.
public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }
}

// Diese Klasse ist keine POCO Klasse!
public class Person : IDisposable
{
    private static readonly ILogger Logger = LoggerFactory.Create(typeof(Person));
    public Person() {}
    public Person(int id, string firstName, string lastName, DateTime birthDate)
    {
        Id = id;
        FirstName = firstName;
        LastName = lastName;
        BirthDate = birthDate;
    }

    [Category("Data")]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }

    public string GetName()
    {
        return $"{FirstName} {LastName}";
    }

    public override string ToString()
        => $"Id:{Id}, FirstName:{FirstName}, LastName:{LastName}, BirthDate:{BirthDate}";

    public void Dispose() {/* Code...*/}
}

Siehe auch

Einzelnachweise

  1. 1 2 HongGit: POCO-Unterstützung - WCF. Abgerufen am 16. März 2021 (deutsch).