FindType - The GUI Way Ver 01


Some facts

Hi, Let me tell you a bit about myself. I started with VB, continued with C++ and then read the book that changed the way I think about OOP, it is called Object Oriented Software Construction second edition  by Meyer, an excellent book that led me to Eiffel.

Eiffel was a great programming language, I really liked the OOP  features that I did not have in VB, furthermore, it was easier then C++ and I think that it is also more powerful  but it is only me.

The problem with Eiffel was that no one supported it, sure it had an IDE and even a free compiler the problem was that it took a lot of time to develop something simple because

  1. It did not have many components.
  2. The microsoft IDE made me lazy.

I searched for something else, at the beginning I thought java would be nice, but then again not so I searched and searched ... and searched ... until microsoft introduced its .Net platform.

So the question is what is so compelling about .Net, for me the answer is very simple, it combines the power, ease of use, simplicity of Eiffel with the visual IDE, support and power of microsoft. Well to tell you the truth I think it is a winning formula.

Now let me tell you a bit about the current project.

The Program

If you chekced the samples directory that came .Net SDK you probably noticed the FindType example, it is a simple example that shows the use of reflections, I decied to improve this example, by adding gui to it and by, at least I think so, improving its logic.

Structure of the program

In order to build it you need three libraries that I built :

  1. DataStructures - Contains important data structures like Fat,Iteratores etc.
  2. WinFormsEx - Currently contains only a ListView extension.
  3. FileSystem - Contains a Path class.

All of those libraries are under SystemEx directory, check them out to see what they contain, remember one thing not all the things in those libraries are finished.

The main program is made out of 4 files :

  1. frmMain - The main form.
  2. frmSearchIn - A dialog box that allows to specify the files to search in.
  3. FindTypeLoops - Classes that inherit from ListIterator and allow iteration on Assemblies, Modules and Types lists.
  4. AssemblyPath - Inherits from Path allows extra checking to see if the file is an actual assembly.

Errors, bugs and nasty things

If you ever used Eiffel you probably know about a programming concept called design by contract, at the beginning I used this concept, of course the problem was and still is that C# does not support it the way I want it to, what does it mean, it means that I have to write a lot in order to get the same affect, well we programmers like to write less that do more, so for now the program only contains few error trapping procedures, I hope that later in the development process I wil add more error checking mechanisms. One more thing the program itself was not checked thoroughly for bugs, it contains bugs I am sure, again  it is a question of time.

One last thing, before viewing, compiling or any other things that you do with your source code, remember this is an experimental program, I wrote it in order learn better C#, to understand the limitations of .Net, therefore, do not consider this program a full one, it can crush, it can cause problems to your computer (I hope not).

Thank you and have a nice day.