'Buddy-Klasse' ist nicht unbedingt C# -spezifisch, aber ich glaube, es wird häufiger in .Net als seine Art eines Musters oder einer Technik (Hack) verwendet, um automatisch generierte Klassen zu erweitern und Attribute hinzuzufügen. Sie werden manchmal auch als assoziierte Klassen oder Metadatenklassen bezeichnet. Die Namenskonvention besteht darin, MD (für Metadaten) an die Buddy-Klasse anzuhängen, damit sie als eine identifiziert werden kann. Aus diesem Grund überschreibt automatisch generierter Code alle von Ihnen vorgenommenen Änderungen. Zugehörige Klassen könnten eine Möglichkeit sein, dies zu umgehen, und Sie könnten Ihre benutzerdefinierten Metadaten (z. B. Validierungsattribute) beibehalten. Sie haben eine Klasse, die automatisch erzeugt wird, handlich als partiell markiert (ich glaube, das ist der Grund, warum der partielle Modifikator eingeführt wurde - um automatisch generierte Klassen zu erweitern). Sie möchten ein Attribut anwenden, so dass Sie eine separate Klasse erstellen, die das enthält, und Sie mit der anderen Klasse verbinden.
Wenn VS dies für einen Ihrer Entitäten erzeugt:
public partial class AutoGeneratedClass
{
public string SomeData { get; set; }
}
Und möchten Sie, dass erweitern und fügen Sie benutzerdefinierte Metadaten Sie dies schaffen könnte:
[MetadataType(typeof(NotAutoGeneratedClassMD))]
public partial class AutoGeneratedClass
{
}
public class NotAutoGeneratedClassMD
{
[DisplayName("This is some data")]
public string SomeData { get; set; }
}
Kurzversion:
Was: Möglichkeit, Klassen zuzuordnen, um eine automatisch generierte Klasse mit benutzerdefinierten Metadaten zu erweitern
Warum: Vermeiden Sie, dass Änderungen an einer automatisch generierten Klasse bei der erneuten Generierung überschrieben werden.
Ich persönlich bin kein Fan, aber das ist eine andere Geschichte :)
Welcher Teil von „geht davon aus ich weiß, was ein Kumpel Klasse _is_“ war unklar? –
Diese Frage macht keine Erklärung für das, was vor sich geht, es fragt nur, warum die Leute das so machen. –
Sie können die gleiche Eigenschaft nicht zweimal in zwei Teilklassen definieren ... http://stackoverflow.com/questions/6131754/how-to-add-data-annotations-to-partial-class –