我将有一个非常大的对象数据库加载到内存中,其中包含字符串(路径)和UInt(索引号)。对于在任何给定时间的较小选择,我还需要有更多成员用于扩展,文件大小,修改日期,创建和获取,分辨率,长度甚至可能是位图缩略图。很多东西我都不想在内存中保留空间,因为大部分内容都不会在任何特定时间使用。
因此,使用我的代码,我会将一个标记字符串输入到一个函数中,它将返回一个List<>这些文件对象。但是我需要他们让所有这些额外的成员加载数据。
我知道如何处理这个问题的唯一方法是返回父对象列表,创建一个新的子对象列表并复制数据。有没有更清洁的方法来处理这种情况?
答案 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
返回空引用它还没有填充。