2009-09-23 4 views
1

J'ai 3 types de données différents: images, vidéos et clips audio. Chacun a un point GPS associé, j'ai donc une classe de base en tant que tel:Est-ce qu'un POCO n'est pas censé avoir une classe de base?

public abstract class Data { 
    public Latitude { get; set; } 
    public Longitude { get; set; } 
} 

C'est ainsi je peux tracer tout sur une carte sans se soucier de ce genre de données, il est. Cependant, j'ai lu que POCO n'est pas supposé être dérivé de n'importe quoi sauf la classe de base object en C#. Est-ce vrai?

+4

Sans répondre à votre question, je vous invite à reconsidérer le nom de classe de base « données ». Cela ne dit vraiment rien. Chaque classe est une donnée, dans un sens très réel. Je suggère "Location" comme un nom légèrement plus descriptif. – abelenky

Répondre

5

Non, beaucoup d'objets POCO ont des classes de base. Aucune règle ne dit qu'ils ne peuvent pas ou ne devraient pas avoir de classes de base. Si cela a du sens dans votre application, faites-le.

1

Je ne vois rien de mal à l'héritage pour les anciens objets clr. En fait, l'héritage est un facteur déterminant pour savoir pourquoi j'aime utiliser des objets POCO plutôt que des jeux de données.

1

Où avez-vous lu cela? Comment construiriez-vous une hiérarchie d'objets si vous n'étiez pas autorisé à dériver de classes autres que System.Object? (Il va sans dire que System.Object sera toujours au sommet de votre hiérarchie de classe dans .NET)

+0

Je lis cela ici: http://www.subsonicproject.com/docs/Using_SimpleRepository En résumé, il dit: "Les objets qu'ils créent un libre de classes de base et existent par leurs propres moyens, comme des objets CLR plaine-vieux (aussi connu sous le nom de POCOs). " –

+0

Je crois que le «a» est supposé être «sont». –

1

Lorsque le mot POCO est utilisé, c'est souvent pour exprimer le contraire de quand vous devez hériter d'une classe de base pour utiliser un frameork comme certains outils ORM nécessite:

MyClass: PersistableEntity (ici PersistableEntity est une classe pour gérer technique persistance dans un cadre ActiveRecord)

vous ne pouvez pas exprimer l'héritage dans votre classe puisque vous ne pouvez hériter d'une classe. Si c'est le cas, vous pouvez utiliser l'agrégation à la place de l'héritage.

Donc, dans votre exemple, votre classe Poco :)

Questions connexes