C#, Generic, Reuse of file enumeration

Posted on 2009-05-13
Last Modified: 2013-12-17
I'm trying to use my FileWorks class below to tell me if a directory has a certain file extension.
I'm trying to be as generic as possible and reuse the function...

I'm not sure how to approach this one. This is the code I have below.

Does not look like it would work if I were to call it...

FileWorks filework = new FileWorks();
filework.GetFilesDoSomething(directory, CheckDirectoryForFilesWithExtension);

How can I pass the bool result back accross soo many functions?

public class FileWorks
        bool CheckDirectoryForFilesWithExtension(FileInfo fi)
            if (fi.Extension == "tif")
                return true;
        public void GetFilesDoSomething(string DirName, Action<FileInfo> method)
            DirectoryInfo d = new DirectoryInfo(DirName);
            FileInfo[] f = d.GetFiles();
            foreach (FileInfo fi in f)

Open in new window

Question by:silentthread2k
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 16

Expert Comment

ID: 24377680
This looks like delegates 101, not generics.

Check this out:

LVL 33

Accepted Solution

Todd Gerbert earned 500 total points
ID: 24378736
This codes isn't really "proper", but it does demonstrate using a delegate to make your GetFilesDoSomething() re-usable.
class Program
	static void Main(string[] args)
		FileWorks.GetFilesDoSomething("C:\\", new FileWorks.SomethingDelegate(FileWorks.CheckDirectoryForFilesWithExtension));
public static class FileWorks
	public delegate void SomethingDelegate(object inParam, out object returnVal);
	public static void CheckDirectoryForFilesWithExtension(object fi, out object returnValue)
		if (((FileInfo)fi).Extension.ToLower() == ".tif")
			returnValue = true;
			returnValue = false;
	public static void GetFilesDoSomething(string dirName, SomethingDelegate method)
		DirectoryInfo d = new DirectoryInfo(dirName);
		FileInfo[] f = d.GetFiles();
		foreach (FileInfo fi in f)
			object returnValue;
			method(fi, out returnValue);
			Console.WriteLine("{0} is a TIF: {1}", fi.Name, (bool)returnValue);

Open in new window


Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In a recent question ( here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below.…

735 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question