C# POCO不应该有基类吗?

C# POCO不应该有基类吗?,c#,poco,C#,Poco,我有3种不同类型的数据:图像、视频和音频剪辑。每个都有一个关联的GPS点,因此我有一个基类: public abstract class Data { public Latitude { get; set; } public Longitude { get; set; } } 这样我就可以在地图上画出所有的东西,而不用担心它是什么样的数据。然而,我一直在读到,除了C#中的base对象类之外,POCO不应该派生自任何东西。这是真的吗?不,许多POCO对象都有基类。没有规定它们不能

我有3种不同类型的数据:图像、视频和音频剪辑。每个都有一个关联的GPS点,因此我有一个基类:

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

这样我就可以在地图上画出所有的东西,而不用担心它是什么样的数据。然而,我一直在读到,除了C#中的base
对象
类之外,POCO不应该派生自任何东西。这是真的吗?

不,许多POCO对象都有基类。没有规定它们不能有或应该有基类。如果在您的应用程序中有意义,那么就这样做。

我认为普通旧clr对象的继承没有问题。事实上,继承是我为什么喜欢使用POCO对象而不是数据集之类的东西的驱动因素。

你从哪里读到的?如果不允许您从非
System.object
类派生,您将如何构建对象层次结构?(不用说,
System.Object
将始终位于.NET中类层次结构的顶部)

当使用POCO这个词时,通常表示与必须继承基类才能使用某些ORM工具所需的框架相反:

MyClass:PersistableEntity(这里PersistableEntity是一个在ActiveRecord框架中管理技术持久性的类)

所以不能在类中表示继承,因为只能从一个类继承。如果是这样,您可以使用聚合而不是继承


因此,在您的示例中,您的类是POCO:)

虽然您可以使用继承,但我不确定Latitude和Longitude类型的数据是否允许在普通的旧CLR/C#对象中使用

我在这里读到:在摘要下,它说:“它们创建的对象没有基类,并且作为普通的旧CLR对象(也称为POCO)独立存在。”“我相信‘a’应该是‘are’。虽然没有回答您的问题,但我敦促您重新考虑基类名称“Data”。那真的没什么意思。从非常真实的意义上讲,每个类都是数据。我建议将“地点”作为更具描述性的名称。