Designing a Collection class

  • Thread starter Thread starter bg_ie
  • Start date Start date
B

bg_ie

Hi,

I have a hypothetical class called MyFiles which stores an array of
objects of type MyFile. MyFiles contains functions like
GetOldestFile(), GetLargestFile(), etc.

class MyFiles
{
MyFile[] myFiles;

public MyFiles(MyPath path)
{
myFiles = ...
}
}

When implementing the MyFiles class, is there any way to expose the
private members of MyFile for MyFiles? Or must I create accessors? For
me, it feels like MyFiles is inheriting from MyFile even though this
inheritance is not specified in code. Does this make sense?

Thanks for your help,

Barry
 
Hi,

I have a hypothetical class called MyFiles which stores an array of
objects of type MyFile. MyFiles contains functions like
GetOldestFile(), GetLargestFile(), etc.

class MyFiles
{
MyFile[] myFiles;

public MyFiles(MyPath path)
{
myFiles = ...
}

}

When implementing the MyFiles class, is there any way to expose the
private members of MyFile for MyFiles? Or must I create accessors? For
me, it feels like MyFiles is inheriting from MyFile even though this
inheritance is not specified in code. Does this make sense?

Thanks for your help,

Barry

If i have understood you correctly,
you could do the following

class MyFiles : List<MyFile>
{


public new MyFile this[int a]
{
get
{
return base[a];
}
}
}

public class MyFile
{
public string Name { get; set; }

}


in your code, you can have

MyFiles f = new MyFiles();
MyFile ff = new MyFile();
ff.Name = "P";

f.Add(ff);

Console.WriteLine(f[0].Name);
 
Just a List<MyFile> or a Collection<MyFile> should do.

Note that LINQ might also solve a lot of those "biggest/oldest" issues
too... (note you could add extra extension methods to avoid the two-
pass approach here...)

List<MyFile> files = new List<MyFile>();
long biggestSize = files.Max(file => file.Size);
MyFile biggestFile = files.FirstOrDefault(file => file.Size ==
biggestSize);
DateTime oldestDate = files.Min(file => file.Created);
MyFile oldestFile = files.FirstOrDefault(file => file.Created
== oldestDate);

Marc
 
Back
Top