如何在子对象和父对象之间进行最佳处理

时间:2014-08-20 08:47:58

标签: c# object inheritance

我将有一个非常大的对象数据库加载到内存中,其中包含字符串(路径)和UInt(索引号)。对于在任何给定时间的较小选择,我还需要有更多成员用于扩展,文件大小,修改日期,创建和获取,分辨率,长度甚至可能是位图缩略图。很多东西我都不想在内存中保留空间,因为大部分内容都不会在任何特定时间使用。

因此,使用我的代码,我会将一个标记字符串输入到一个函数中,它将返回一个List<>这些文件对象。但是我需要他们让所有这些额外的成员加载数据。

我知道如何处理这个问题的唯一方法是返回父对象列表,创建一个新的子对象列表并复制数据。有没有更清洁的方法来处理这种情况?

1 个答案:

答案 0 :(得分:1)

也许使用组合而不是继承 - 有一个额外的属性,当前你的“扩展属性”的基类...然后只是懒洋洋地填充该属性:

public class FileInfo // Or whatever
{
    public string Path { get { ... } };
    public uint Index { get { ... } };
    public ExtendedFileInfo ExtendedFileInfo { get { ... } }
}

public class ExtendedFileInfo
{
    public long Size { get { ... } }
    ...
}

您可以隐式在请求属性时加载ExtendedFileInfo,或者只是添加一个方法来显式填充它,以便ExtendedFileInfo返回空引用它还没有填充。